Skip to content

Beiträge

Verständnis beginnt mit aussagekräftigen Namen

30. September 2019 • 4 Min. Lesezeit

Verständnis beginnt mit aussagekräftigen Namen

Im Jahr 2018 stieß ich zu einem großen Projekt, das bereits zur Hälfte entwickelt war. Die ursprünglichen Ingenieure waren weitergezogen und hinterließen verworrenen und undokumentierten Code. Mit dieser Art von Code zu arbeiten ist herausfordernd, weil man die technische Infrastruktur nicht von der Geschäftsdomäne unterscheiden kann. Das macht das Debugging schwierig und Änderungen unvorhersagbar, weil man die Auswirkungen nicht kennt. Es ist, als würde man versuchen, ein Buch zu bearbeiten, ohne die Wörter zu verstehen.

Viele Ingenieure glauben, dass der Erfolg daran gemessen wird, ob der Code kompiliert. Ich glaube, er wird daran gemessen, ob ein anderer Ingenieur (oder Sie selbst in sechs Monaten) das “Warum” Ihres Codes versteht. Die ursprünglichen Ingenieure haben die zukünftigen Ingenieure behindert, indem sie nicht dokumentiert und unverständliche Namen verwendet haben. Die Namen sind manchmal das einzige Fenster in den Denkprozess des vorherigen Ingenieurs.

Donald Knuth sagte berühmt:

Programme sind dazu gedacht, von Menschen gelesen zu werden und nur nebenbei von Computern ausgeführt zu werden. – Donald Knuth

Benennung

Benennung ist schwierig, weil sie erfordert, zu kennzeichnen und zu definieren, wo und wie ein Teil in eine Anwendung passt.

Phil Karlton bemerkte bei Netscape:

Es gibt nur zwei schwierige Dinge in der Informatik: Cache-Invalidierung und die Benennung von Dingen.
— Phil Karlton

Wir sehen unseren Code durch die Brille der Wörter und Namen, die wir verwenden. Namen schaffen eine Sprache für den nächsten Ingenieur zum Verstehen. Diese Sprache malt ein Bild davon, wie der Autor die Geschäftsdomäne und die Programmiersprache überbrückt hat.

Ludwig Wittgenstein, ein Philosoph der ersten Hälfte des 20. Jahrhunderts, sagte:

Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt. – Ludwig Wittgenstein

Die Sprache unserer Software ist nur so beschreibend wie die Namen, die wir verwenden, und vage Namen verwischen den Zweck der Software; beschreibende Namen bringen Klarheit und Verständnis.

Stellen Sie sich vor, Sie besuchen ein Land, dessen Sprache Sie nicht sprechen. Eine einfache Bitte wie die Frage nach der Toilette bringt verwirrte Blicke. Die Unfähigkeit zu kommunizieren ist frustrierend, vielleicht sogar beängstigend. Ein Ingenieur fühlt dasselbe, wenn er mit verwirrenden, unklaren oder noch schlimmer, irreführenden Namen konfrontiert wird.

Dieses Gefühl erlebt man am besten selbst.

Erfahrung

Betrachten Sie den ersten Code-Ausschnitt, was macht dieser Code? Was ist das Warum?

Lassen Sie sich Zeit.

public class StringHelper
{
    public string Get(string input1, string input2)
    {
        var result = string.Emtpy;
        if(!string.IsNullOrEmtpy(input1) && !string.IsNullOrEmtpy(input2))
        {
            result = $"{input1} {input2}";
        }
        return result;
    }
}

Der obige Code ist eine einfache Verkettung von zwei Strings. Was der Code Ihnen nicht sagt, ist das “Warum”. Das “Warum” ist so wichtig, ohne es ist es schwierig, das Verhalten zu ändern, ohne die Auswirkungen zu verstehen. Natürlich wird die Untersuchung der Code-Verwendung wahrscheinlich das “Warum” offenbaren, aber das ist der Punkt. Sie sollten nicht den Zweck des Codes entdecken müssen, stattdessen sollte der Autor Hinweise hinterlassen haben, es ist ihre Verantwortung, dies zu tun.

Lassen Sie uns den Code noch einmal betrachten, aber mit etwas “Warum” hineingestreut.

Wieder, lassen Sie sich Zeit, beobachten Sie den Unterschied, den Sie beim Lesen dieses Codes fühlen.

    public class FirstAndLastNameFormatter
    {
        public string Concatenate(string firstName, string lastName)
        {
            var fullName = string.Emtpy;
            if(!string.IsNullOrEmtpy(firstName) && !string.IsNullOrEmtpy(lastName))
            {
                fullName = $"{firstName} {lastName}";
            }
            return fullName;
        }
    }

Das “Warum” erweckt den Code zum Leben, es gibt eine Geschichte zu lesen.

Kommunizieren

Die Absicht und das Design dem nächsten Ingenieur zu kommunizieren, ermöglicht es der Software zu leben und zu wachsen, denn wenn Ingenieure die Software nicht modifizieren können, stirbt sie. Das ist eine Tragödie, umso mehr, wenn sie das Ergebnis von schlechtem Design und mangelnder Ausdruckskraft ist — beides ist mit Wissen vermeidbar.

Tun Sie dem nächsten Ingenieur einen Gefallen und seien Sie ausdrucksstark in Ihrem Code. Verwenden Sie beschreibende Namen und erfassen Sie das “Warum”, denn wer weiß, der nächste Ingenieur könnten Sie selbst sein.

Autor: Chuck Conway ist spezialisiert auf Software-Engineering und Generative KI. Verbinden Sie sich mit ihm in den sozialen Medien: X (@chuckconway) oder besuchen Sie ihn auf YouTube.

↑ Zurück nach oben

Das könnte dir auch gefallen