|
@ -56,3 +56,48 @@ |
|
|
- objektorientiert |
|
|
- objektorientiert |
|
|
- funktional |
|
|
- funktional |
|
|
- imperativ |
|
|
- imperativ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Programmierprinzipien |
|
|
|
|
|
|
|
|
|
|
|
## SOLID |
|
|
|
|
|
|
|
|
|
|
|
### Separations of Concern |
|
|
|
|
|
Module sollten einem und nur einem Akteur gegenüber verantwortlich sein |
|
|
|
|
|
|
|
|
|
|
|
### Open/Closed Principle |
|
|
|
|
|
Bei der Entwicklung von Klassen, Methoden, Modulen usw. sollen Erweiterungen einfach implimentierbar sein, |
|
|
|
|
|
aber ohne die bestehenden Verhältnisse zu verändern. |
|
|
|
|
|
|
|
|
|
|
|
### Liskov Substitution Principle |
|
|
|
|
|
Subklassen sollen immer Eigenschaften der Superklasse erfüllen und auch als solche verwendet werden können. |
|
|
|
|
|
|
|
|
|
|
|
### Interface Segregation Principle |
|
|
|
|
|
Interfaces sollen an Bedürfnis des Client angepasst werden und nicht übermäßig überladen werden. |
|
|
|
|
|
|
|
|
|
|
|
### Dependency Inversion Principle |
|
|
|
|
|
Module höherer Ebene sollten nicht von Modulen niedriger Ebene abhängen. Beide sollten von Abstraktionen abhängen. |
|
|
|
|
|
Abstraktionen sollten nicht von Details abhängen. Details sollten von Abstraktionen abhängen. |
|
|
|
|
|
|
|
|
|
|
|
## STUPID |
|
|
|
|
|
|
|
|
|
|
|
### Singelton |
|
|
|
|
|
Es wird nur genau ein Objekt pro Klasse erzeugt und global zur Verfügung gestellt. |
|
|
|
|
|
Es kann dadurch zu Abhängigkeiten führen, die man nicht direkt sehen kann. |
|
|
|
|
|
|
|
|
|
|
|
### Tight Coupling |
|
|
|
|
|
Module zu stark verkuppelt, dass Änderungen in einem Modul immer zu einer weiteren Änderung führen müssen. |
|
|
|
|
|
Isolierte Testungen sind so fast unmöglich. |
|
|
|
|
|
|
|
|
|
|
|
### Untestability |
|
|
|
|
|
Untestbarkeit von Modulen (z.B. durch Tight Coupling) |
|
|
|
|
|
|
|
|
|
|
|
### Premature Optimization |
|
|
|
|
|
Frühzeitige Optimierung bevor überhaupt Probleme entstanden sind (viel Zeit für nichts). |
|
|
|
|
|
|
|
|
|
|
|
### Indescriptive Naming |
|
|
|
|
|
Ungenaue Benennung von Variablen, Funktionen usw. Andere Programmierer haben Probleme diesen Code nachzuvollziehen. |
|
|
|
|
|
|
|
|
|
|
|
### Duplication |
|
|
|
|
|
Keine Dopplung von den selben Code. Änderung müssen mehrmals vorgenommen werden. |
|
|
|
|
|
|