57 Stimmen

Namenskonventionen für Funktionen

Ich schreibe eine Bibliothek, also möchte ich, dass die Funktionen so klar und clever wie möglich benannt werden. Derzeit verwende ich die folgenden Prinzipien:

  1. Selbsterklärende Namen: eine Funktion getName() sagt dem Entwickler, was sie zurückgibt, ebenso wie setAddress(), isMale(), usw.
  2. Kurz: Ein Funktionsname muss so kurz wie möglich sein so kurz wie möglich sein, damit er einfach zu tippen und leicht zu merken. Eine Funktion getNumberOfPagesInTheBook() ist nicht gut, etwas wie getBookPageCount() ist besser.
  3. Verwendung von Präfixen: Ich verwende immer Präfixe in den Funktionen wie getName(), setName(), hasHair(), isBlond(), usw.

Ich würde gerne wissen, ob ich etwas übersehe. Fallen Ihnen noch andere Präfixe als is, has, get und set ein?

95voto

Carl Smotricz Punkte 64366

Eine der allgemeingültigen, aber einfachen Regeln lautet: Funktionsnamen sollten Verben sein, wenn die Funktion den Zustand des Programms ändert, und Substantive, wenn sie dazu dienen, einen bestimmten Wert zurückzugeben.

16voto

Moshe Levi Punkte 3363

Eine weitere wichtige Sache, die man beim Schreiben einer Bibliothek beachten sollte, ist die Verwendung desselben Wortes, um die gleiche Aktion jedes Mal zu beschreiben. getName in einer Klasse und eine weitere Funktion namens abrufenNummer in einer anderen Klasse.

4voto

Adriaan Stander Punkte 155899

3voto

gamliela Punkte 2849

Hier ist eine großartige Quelle, die dasselbe rät wie die Antwort von @Carl: https://swift.org/documentation/api-design-guidelines/#strive-for-fluent-usage

Funktionen und Methoden nach ihren Nebeneffekten benennen

  • Diejenigen, die keine Nebenwirkungen haben, sollten als Substantivsätze gelesen werden, z. B. x.distance(to: y) , i.successor() .

  • Diejenigen mit Nebeneffekten sollten als imperative Verbphrasen gelesen werden, z. B, print(x) , x.sort() , x.append(y) .

2voto

Vatine Punkte 19955

Andere Präfixe? Möglicherweise "isa", obwohl das nur in einigen Situationen anwendbar ist.

Einige Sprachen können "get" und/oder "set" mit anderen Konstrukten kommunizieren (speziell in Common Lisp kann man (setf (get* ...) blah) dazu bringen, das Gleiche zu tun, was man mit (set* ... blah) hätte tun wollen).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X