Archiv der Kategorie: Software Engineering

Grundprinzipien der objektorientierten Programmierung

Loose Coupling – Schwache Kopplung

  • Definiert, wie sehr Systembesstandteile voneinander abhängen
  • Klassen sollten so strukturiert sein, dass sie auf möglichst wenige andere Klassen angewiesen sind, um funktionieren zu können
  • Erhöht Wiederverwendbarkeit der Klassen enorm!

sinnvolle Abhängigkeiten

  • Stark zusammengehörende Code-Teile sollten zusammengefasst werden
  • Nicht zusammenhängende Code-Teile sollten ausgelagert werden (don’t do too much!)
  • Veränderungen einer Klasse sollten im Optimalfall keine Änderung an weiteren Klassen hervorrufen

Information Hiding – Geheimnisprinzip

  • Jede Klasse gibt nur das nötigste nach außen und „weiß“ selbst auch nur das, was sie zum funktionieren wissen muss
  • Keine Interna werden nach außen getragen. Ich muss nicht wissen, dass intern ein Stack als Datenstruktur verwendet wird, um die Klasse zu benutzen
  • Änderungen innerhalb der Klasse selbst sollten nach außen nicht sichtbar sein, da andere Klassen nur das nötigste von ihr kennen
  • Spielt auf sinnvolle Verwendung von public / private / protected an

Homogenität

  • Vergleichbare Probleme sollten mit vergleichbarer Komplexität gelöst werden
  • Wiederverwendung von bereits bestehenden Lösungen soweit wie möglich
  • Leitlinie: „Erwartungshaltung“ anderer Teammitglieder sollte erfüllt werden, was den Umfang der Realisierung einer Klasse angeht

Don’t repeat yourself – Redundanzfreiheit

  • Jede Funktionalität ist an genau einer Stelle vorhanden und wird – bei Bedarf – von anderen Systembestandteilen verwendet (Don’t reinvent the wheel)
  • Sollte Code mehrfach verwendet worden sein (Copy & Paste aus Faulheit), wird eine neue Funktion daraus erschaffen, die dann von allen Teilen aus aufgerufen wird
  • Vorteil: Bei einem Fehler muss nur an einer Stelle korrigiert werden und alle anderen, davon abhängigen Teile sind automatisch „gefixt“
Den ganzen Post lesen
Veröffentlicht unter Software Engineering, webdev | 4 Kommentare

Über ORM

ORM ist an sich eine feine Sache. Durch die zusätzliche Abstraktionsschicht ist man so gut wie vollkommen datenbankunabhängig. Weiterhin hat man einen sauberen OOP Ansatz duchgehend im Projekt ohne hässliche SQL Statements dazwischengemischt zu haben. Es fühlt sich sehr „smooth“ an und steigert – richtig gemacht – auch durchaus die Verständlichkeit des Codes.

Trotzdem bin ich nicht in allen Belangen großer Freund von ORM. Neulich hatte ich mit einer Tabelle zu tun, in der mehrere Millionen Tupel enthalten waren. Ein falsch platzierter Index oder der kleinste Fehler bei der Formulierung der Query führt dazu, dass man mehrere Minuten auf das Ergebnis der Abfrage warten darf.… Den ganzen Post lesen

Veröffentlicht unter Datenbanken, Software Engineering, Performance, webdev | 3 Kommentare