areBooleansQuestions? Boolesche Variablen sinnvoll benennen

Vor kurzem habe ich mein derzeitiges Testautomatisierungsprojekt „The Internet“ vorgestellt. Im Rahmen des Projekts fiel mir auf, dass ich einige boolesche Methoden als Fragen, andere als Aussagen formuliert hatte. So hieß die eine Methode isAlertPresent() und die nächste nameIsDisplayed(). Also begann ich, nach Konventionen zu suchen…

Gleich der erste Beitrag, den ich gefunden habe, geht tief ins Detail: Tips on naming boolean variables. Allerdings geht es dem Autor gar nicht darum, ob eine Variable nun heißen soll userIsLoggedIn oder isUserLoggedIn. Er geht von einer Konvention aus, dass ein Boolean immer mit is oder has beginnt. Somit wird die Variable zu einer Frage.

Booleans als Aussage

Nach einem Blick in die Kommentare unterhalb des Beitrags wird klar: es gibt auch gegenteilige Meinungen. Und die sind wohlbegründet. Denn ein Boolean als Aussage ergibt natürlichere Sätze, wenn man ihn in Kontrollstrukturen einbaut. Ein Beispiel:

if (secondCheckboxIsSelected()) {
    clickSecondCheckbox();
}

alternativ könnte dieses Beispiel so aussehen:

if (isSecondCheckboxSelected()) {
    clickSecondCheckbox();
}

Auch im Kontext von Assertions liest sich die Aussageform natürlicher als die Frageform:

assertTrue(textOfSecondParagraphIsCorrect()) vs. assertTrue(typosPage.isTextOfSecondParagraphCorrect())

Booleans als Frage

Doch auch boolesche Variablen als Fragen zu formulieren, ist nicht unbegründet. Ein gutes Argument ist, dass Variablen mit einem Prefix wie is, has oder are sofort als Boolean zu erkennen sind. Ein ebenso gutes Argument ist, dass die Autovervollständigung bzw. Vorschläge besser funktionieren, wenn alle booleschen Variablen gleich beginnen. Beide Argumente greifen vor allem in großen Projekten.

Fazit: Keine Frage – boolesche Variablen lesen sich als Aussagen natürlicher

Mich haben die Kommentare im verlinkten Beitrag davon überzeugt, dass boolesche Variablen als Aussage natürlicher klingen. Zwar gibt es gute Argumente für eine Benennung in der Frageform, doch diese greifen eher in großen Projekt. In einem überschaubaren Projekt ist ein Boolean auch ohne Prefix als solches zu erkennen. So gewinnt das Argument der besseren Lesbarkeit.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.