Halten Sie sich an das KISS-Prinzip

Das KISS-Prinzip ("Keep it simple, stupid", zu deutsch etwa: "Halt es einfach, Blödmann") besagt, dass man möglichst einfache und verständliche Lösungswege suchen soll. Dies unter Anderem deshalb, weil schwer verständlicher Code auch schwer zu warten ist. Verständlicher Code zeichnet sich z.B. dadurch aus, dass er weitestgehend ohne Kommentare auskommt und dabei trotzdem nachvollziehbar bleibt. Möglicherweise kommt hierbei im Einzelfall die Geschwindigkeit ein wenig zu kurz, aber glauben Sie mir: die meisten Anwender benutzen lieber ein Programm, das etwas langsamer funktioniert als eines, das schneller abstürzt ;)
Nehmen wir einmal ein Beispiel, wie es mir kürzlich in einem Delphi-Forum untergekommen ist: es soll eine zufällige Zeichenkette bestehend aus Groß- und Kleinbuchstaben sowie Ziffern mit einer vorgegebenen Länge gebildet werden.
Beispielcode 1:
function GenerateRandomString(ACount: Cardinal): string;
var
  I, J, K: Cardinal;
  AList: TList;
begin
  Result := '';
  AList := TList.Create;
  try
    for I := 48 to 57 do
      AList.Add(Pointer(I));
    for I := 65 to 90 do
      AList.Add(Pointer(I));
    for I := 97 to 122 do
      AList.Add(Pointer(I));
    for I := 1 to ACount do
      begin
        J := Random(AList.Count);
        K := integer(AList.Items[J]);
        Result := Result + Chr(K);
      end;
  finally
    AList.Free;
  end;
end;
Beispielcode 2:
function GenerateRandomString(ACount: Cardinal): string;
const
  VALIDCHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 
               'abcdefghijklmnopqrstuvwxyz' +
               '0123456789';
var
  I: integer;
begin
  SetLength(Result, ACount);
  for I := 1 to ACount do
    Result[I] := VALIDCHARS[Random(Length(VALIDCHARS)) + 1];
end;
Beide Codes funktionieren, das kann ich Ihnen versichern. Die Frage ist allerdings: welcher der beiden lässt sich besser nachvollziehen?
Ein weiteres Beispiel wieder aus einem Delphi-Forum (ich muss allerdings vorausschicken, dass es sich hier eher um einen Scherz handelte, welcher sich letztendlich über mehr als 200 Beiträge erstreckte):
Eine gegebene vorzeichenbehaftete Zahl soll ihr Vorzeichen ändern (also z.B. 10 in -10 und umgekehrt).
Beispielcode 1:
Zahl := Succ(Zahl xor (1 shl Pred(SizeOf(Integer) shl 3) + MAXINT));
Beispielcode 2:
Zahl := -Zahl;

Lassen Sie die jeweiligen Beispiele einmal auf sich wirken und stellen Sie sich dann vor, Sie müssten dort einen Fehler beseitigen oder die Routinen erweitern. Ich denke, spätestens jetzt sollte Ihnen klar sein, was das KISS-Prinzip bedeuten soll.
Übrigens: zu lesbarem Code gehören auch "sprechende" Bezeichner für Variablen, Konstanten, Routinen usw. Das ist eine Tatsache, die immer wieder gern ignoriert wird.