|
| 1 | += KISS Principle |
| 2 | +:categories: design-principles |
| 3 | +:roles: software-developer, software-architect, consultant, educator |
| 4 | +:proponents: Kelly Johnson, Robert C. Martin |
| 5 | +:related: yagni, dry-principle, solid-principles |
| 6 | +:tags: kiss, simplicity, design-principles, over-engineering, readability |
| 7 | + |
| 8 | +[%collapsible] |
| 9 | +==== |
| 10 | +Vollständiger Name:: Keep It Simple, Stupid (auch: Keep It Super Simple) |
| 11 | + |
| 12 | +Auch bekannt als:: KISS, Keep It Simple |
| 13 | + |
| 14 | +[discrete] |
| 15 | +== *Kernkonzepte*: |
| 16 | + |
| 17 | +Einfachheit als Designziel:: Systeme funktionieren am besten, wenn sie einfach gehalten werden; Komplexität sollte möglichst vermieden werden |
| 18 | + |
| 19 | +Over-Engineering vermeiden:: Keine Komplexität, Abstraktionen oder Funktionen hinzufügen, die über das aktuelle Problem hinausgehen |
| 20 | + |
| 21 | +Lesbarkeit statt Cleverness:: Code, der leicht zu lesen und zu verstehen ist, wird gegenüber ausgefeilten, aber undurchsichtigen Lösungen bevorzugt |
| 22 | + |
| 23 | +Einfachste funktionierende Lösung zuerst:: Den geradlinigsten Ansatz implementieren, der die Anforderungen erfüllt, dann bei Bedarf verfeinern |
| 24 | + |
| 25 | +Reduktion der kognitiven Last:: Einfachere Designs reduzieren den mentalen Aufwand, der erforderlich ist, um ein System zu verstehen, zu pflegen und zu erweitern |
| 26 | + |
| 27 | +Progressive Verbesserung:: Einfach beginnen; Komplexität nur hinzufügen, wenn sie durch konkrete Anforderungen gerechtfertigt ist (ergänzt YAGNI) |
| 28 | + |
| 29 | +Schlüsselvertreter:: Kelly Johnson (Lockheed Skunk Works, 1960er), Robert C. Martin ("Clean Code", 2008) |
| 30 | + |
| 31 | +[discrete] |
| 32 | +== *Wann zu verwenden*: |
| 33 | + |
| 34 | +* Bei der Wahl zwischen einer einfachen und einer komplexen Lösung |
| 35 | +* Beim Überprüfen von Code auf Wartbarkeit und Lesbarkeit |
| 36 | +* Beim Entwerfen von APIs, Schnittstellen oder Datenmodellen |
| 37 | +* Beim Einarbeiten neuer Teammitglieder in eine unbekannte Codebasis |
| 38 | +* Beim Refactoring von Code, der unnötig komplex geworden ist |
| 39 | + |
| 40 | +[discrete] |
| 41 | +== *Verwandte Anker*: |
| 42 | + |
| 43 | +* <<yagni,YAGNI>> - Nicht implementieren, was noch nicht benötigt wird (komplementäres Einfachheitsprinzip) |
| 44 | +* <<dry-principle,DRY>> - Redundanz eliminieren, um Codebasen einfach und konsistent zu halten |
| 45 | +* <<solid-principles,SOLID Principles>> - Strukturierte Richtlinien, die saubere, einfache Designs fördern |
| 46 | +==== |
0 commit comments