Skip to content

Wahnsinn? Das ist ... SPARTAN PROGRAMMING!!!

Benjamin West: Cleombrotus Ordered into Banishment by Leonidas II, King of Sparta

Der Einfluss des antiken Griechenlands auf unsere heutige Kultur kann gar nicht überschätzt werden. Sogar bis in die Software-Entwicklung hat sie Eingang gefunden. Darum möchte ich heute ein ganz besonderes Software-Entwicklungsprinzip vorstellen: Spartan Programming.

Spartan Programming

Spartan Programming verfolgt das Prinzip der "Robustheit durch Minimalismus": Je weniger Code, desto weniger kann schiefgehen. Je früher Methoden verlassen werden, je weniger Schaden können sie anrichten.

(Man muss diese Ansichten nicht teilen.)

(Die meisten Progger dürften spartanische Prinzipien eh schon anwenden.)

Hier mal eine Auflistung der Ziele und Prinzipen von Spartan Programming:

You strive for simultaneous minimization of your code in many dimensions:

  • Horizontal complexity. The depth of nesting of control structures.
  • Vertical complexity. The number of lines or length of code.
  • Token count.
  • Character count.
  • Parameters. The number of parameters to a routine or a generic structure.
  • Variables.
  • Looping instructions. The number of iterative instructions and their nesting level.
  • Conditionals. The number of if and multiple branch switch statements.

The discipline of spartan programming means frugal use of variables:

  • Minimize number of variables. Inline variables which are used only once. Take advantage of foreach loops.
  • Minimize visibility of variables and other identifiers. Define variables at the smallest possible scope.
  • Minimize accessibility of variables. Prefer the greater encapsulation of private variables.
  • Minimize variability of variables. Strive to make variables final in Java and const in C++. Use annotations or restrictions whenever possible.
  • Minimize lifetime of variables. Prefer ephemeral variables to longer lived ones. Avoid persistent variables such as files.
  • Minimize names of variables. Short-lived, tightly scoped variables can use concise, terse names.
  • Minimize use of array variables. Replace them with collections provided by your standard libraries.

It also means frugal use of control structures, with early return whenever possible.

Wer Probleme mit seiner Männlichkeit hat und sich näher mit dem Thema beschäftigen will, der findet hier einen Einstieg:

Eine Reihe von (Java-)(Refactoring-)Tools finden sich unter anderem hier (da gibt's so Sachen wie das Athenizer plugin, einen Spartanizer und IntelliJ Leonidas):

Happy Hacking!

Bildnachweis: Benjamin West (1738–1820): Cleombrotus Ordered into Banishment by Leonidas II, King of Sparta (1768)

Trackbacks

Keine Trackbacks

Kommentare

Ansicht der Kommentare: Linear | Verschachtelt

Noch keine Kommentare

Kommentar schreiben

Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Gravatar, Twitter, Pavatar, Identica, Favatar Autoren-Bilder werden unterstützt.
Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Markdown-Formatierung erlaubt
Formular-Optionen