2012-11-30 8 views
6

Ich bin kein englischer Muttersprachler, daher wurde ich durch die Namenskonvention der Funktionen verwirrt, die boolean zurückgeben.Was sind die Namenskonventionen von Funktionen, die Boolean zurückgeben?

Ich habe folgende Funktionsnamen bekannt sind konventionell:

bool is_valid(); 
bool is_sorted(); 
bool is_empty(); 
bool has_children(); 
bool can_draw(); 

Allerdings frage ich mich, ob ein anderer Funktionsnamen, die mit Verben beginnen andere als „ist, sind, können sie, usw.“, sind auch konventionell wie folgt:

bool TryToCloseWindow(); // check to see if the user tries to close the window 
bool IntendToCloseWindow(); // as above 
bool FileExists();   // check to see if the file exists 

Wenn Sie einen englischen Muttersprachler und Programmierer sind, denken Sie, die drei Funktionsnamen üblich sind?

+1

Es gibt keine feste Namenskonvention für Sprachen, die von C abgeleitet sind (wie zum Beispiel C++ und Java) . Es liegt sehr an der Person oder der Organisation. Verschiedene Personen/Organisationen haben unterschiedliche Benennungsstile. –

+0

Ich möchte wissen, ob die letzten drei natürlich aussieht. – xmllmx

+1

Die WIN32-API hat mehrere Funktionen, die ähnlich wie die letzten drei benannt sind. Aber wenn es Ihr eigener Code ist, an dem Sie gerade arbeiten, dann liegt es ganz bei Ihnen, wie Sie Kennungen benennen und formatieren wollen. Wählen Sie einen Stil, mit dem Sie sich wohl fühlen, Sie können sogar den Stil zwischen den Projekten ändern. Behalte den Stil in einem einzigen Projekt kohärent. –

Antwort

7

Kurze Antwort auf Ihre Titelfrage: Anders. Es gibt Unmengen von Konventionen, vielleicht sogar mehr Konventionen als Programmierer. Einige Konventionen möchten ein "ist" am Anfang jeder Bool-Rückgabe-Funktion haben, andere nicht. Und streiten Sie sich nicht über Unterstreichungen, CamelCase, lowCamelCase etc.. Solange Sie sich an die von Ihnen ausgewählte halten, sind sie alle gleichermaßen lesbar.

Ich denke, was ist wichtig ist, dass die Funktionsnamen ausdrücken, was sie tun. Funktionen, die bools zurückgeben, erscheinen oft im Kontext von Bedingungen oder Schleifen. Daher denke ich, dass es am besten ist, den gewünschten Namen in einen solchen Kontext zu stellen und zu sehen, ob es richtig klingt. z.B. if (fileExists()) { /* ... */ } hört sich gut an. tryToCloseWindow() klingt wie "Hey, Compiler/Programm, schließen Sie bitte das Fenster". Ihr Kommentar gibt einen Hinweis, der nicht das ist, was Sie wollen. Vielleicht benutze 'userIsClosingWindow()' oder so ähnlich. "beabsichtigen" ist kein Verb, das ich für Funktionsnamen verwenden würde. Etw. Beabsichtigen bedeutet, dass du etw. tun willst, du hast es im Sinn, du denkst darüber nach, aber es gibt keine wirkliche Handlung. Also, wenn Sie beabsichtigen, ein Fenster zu schließen, tun Sie es einfach, oder lassen Sie es. Keine Notwendigkeit, dem Compiler zu sagen "Hey, ich beabsichtige, das Fenster zu schließen, in ein paar Zeilen werde ich es vielleicht tun ...". Und Sie haben keine Möglichkeit festzustellen, ob der Benutzer beabsichtigt, ein Fenster zu schließen. Wenn er sein Microsoft Mindreader Device nicht an einen USB-Port angeschlossen hat und Zugriff auf die API hat, sende mir bitte einen Link, danke;)

+0

Vielen Dank für Ihre Erklärung. – xmllmx

1

im Allgemeinen sollte dies die Namenskonvention wie die unten mit Kleinbuchstaben beginnen.

bool tryToCloseWindow(); // check to see if the user try to close the window 
bool intendToCloseWindow(); // as above 
bool fileExists();   // check to see if the file exists 
0

Wenn Sie die Namen wie isValid() verwenden, ist es sinnvoller.

Es gibt den Wert true oder false so für if(isValid()) ..., jeder kann das Konzept leicht verstehen.

Normalerweise folgen nicht alle Organisationen denselben Namenskonventionen. Es hängt von Unternehmen zu Unternehmen, Entwickler zu Entwickler.

+0

Ich möchte nur wissen, ob die letzten drei konventionell sind. – xmllmx

+0

Wenn Sie so verwenden bool IsTryToCloseWindow(); bool IsIntendToCloseWindow(); bool IsFileExists(); dann ist es konventioneller. – andy

+2

Diese Namen sind nicht grammatikalisch korrekt. – xmllmx

Verwandte Themen