empros gmbh - process & information management services
1009-chatExperience is the hardest kind of teacher.
It gives you the test first and the lesson afterward.

-Susan Ruth

Programming by Intention

Heuristik

Machen Sie Ihre Absichten klar, wenn Sie Code schreiben.

Erklärung

Je mehr unser Programm sich wie die Lösung eines Problems aus der Fachdomäne liest, und je weniger es an eine Vorführung von Konstrukten der verwendeten Programmiersprache erinnert, desto besser ist es. Wir können die intellektuelle Beherrschbarkeit unserer Programme stark verbessern, wenn wir uns so lange wie möglich auf das Was konzentrieren und uns um das Wie so früh wie nötig aber so spät wie möglich kümmern. Diese Art der Programmierung wird auch als „Programming by Intention“ bezeichnet und ist eine zentrale Idee hinter Extreme Programming. Dieser Ansatz stellt die Absicht (was getan wird) in den Vordergrund. Dabei fordert und fördert diese Art der Programmierung den Entwurf vom Groben zum Detail.

Guter Programmcode ist nach dem Prinzip „Programming By Intention“ entworfen – er basiert auf klaren und leicht einzuhaltenden Codierrichtlinien, setzt Entwurfsmuster wohl dosiert ein und verwendet konsequent die Idiome der jeweiligen Programmiersprache; Guter Programmcode ist in weiten Teilen selbst-dokumentierend. Testorientierte Entwicklung und regelmässiges Refactoring helfen dabei, Struktur und Qualität des Codes zu erhalten bzw. zu verbessern. Die einzelnen Module des Systems verfügen über klare vertragsbasierte Schnittstellen, ihre korrekte Funktion und ihre korrekte Verwendung sowie ihr Zusammenspiel untereinander, wird durch die vorhandenen Testfälle überprüft und beschrieben. Kritische Entwurfsentscheidungen und nicht offensichtliche Aspekte des Entwurfs werden mit Hilfe von entsprechenden Kommentaren herausgestellt. Kurz: guter Programmcode ist darauf ausgelegt, Struktur, Inhalt und Funktionsweise klar zu kommunizieren.

Was ist zu tun, damit Code so verständlich und aufschlussreich wie möglich ist? Hier eine kleine Auswahl:

  • Namen: Wählen Sie sinnvolle Namen und folgen Sie auch hier dem Prinzip der geringsten Überraschung. Sie können jeden Begriff oder Namen wählen, um sich auf eine Sache zu beziehen. Aber wenn es sich dabei um ein Wort handelt, das die beabsichtige Bedeutung nicht vermittelt, dann ist dieses Wort der Klarheit Feind, es verwirrt anstatt zu erklären. Werden Sie misstrauisch, wenn sich eine Sache nicht benennen lässt, oft steckt dahinter ein ernsthaftes Entwurfsproblem.
  • Einfachheit: Wählen Sie einfache Lösungen und sorgen Sie dafür, dass die Dinge so einfach wie möglich bleiben; Refactoring ist ein gutes Werkzeug hierzu.
  • Keine Kommentare: Es gibt gute Gründe, Quellcode zu dokumentieren, insbesondere als Basis für automatisch erstellbare Programmdokumentation im JavaDoc-Stil. Achten Sie aber darauf, dass Sie Kommentare nicht dazu verwenden, um den schlechten Geruch in Ihrem Code zu überdecken. Wenn Sie auf eine Codestelle stossen, die erklärungsbedürftig erscheint, dann fragen Sie sich kritisch, warum.
  • Test-getrieben Entwicklen: Das Schreiben von Tests vor der eigentlichen Implementierung hilft Ihnen, sich auf das was zu konzentrieren und Ihre Schnittstellen konsequent aus der Sicht des Verwenders zu entwerfen. Das Resultat sind einfache und aufschlussreiche Schnitstellen, die ihren Zweck und ihre Verwendung klar kommunizieren.