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?

0voto

FranMowinckel Punkte 3965

Wenn es eine allgemeingültige Regel gibt, dann sollte sie meiner Meinung nach lauten, konsequent zu sein.

Es gibt auch das Präfix "on", das im Umgang mit Ereignissen weit verbreitet ist (z. B. Java Android): onViewCreated ). Einige andere Präfixe oder kurze und/oder generische Verben (wie has, get und set), die häufig verwendet werden, sind:

Ich bevorzuge die Verwendung von Substantiven für einfache Getter, wenn nur sehr wenig Logik involviert ist (z.B. Eigenschaften), aber ich würde das Präfix "get" für komplexe Aktionen verwenden:

func center() {
   return (a + b) / 2
}

In einigen Sprachen, in denen die explizite Verwendung des Präfixes "get" weit verbreitet ist (z. B. Android - Java), ist es jedoch üblich, ein Verb wie "compute" zu verwenden (d. h. [computeVerticalScrollOffset()](http://developer.android.com/reference/android/view/View.html#computeVerticalScrollOffset()) )

Außerdem wird in einigen Sprachen (z. B. flink ) können Sie auch Eigenschaftssetzer verwenden, so dass Sie das Präfix "set" nicht wirklich brauchen:

var x: X {
  get {
    return foo(x)
  }
  set {
    x = bar(newValue)
  }
}

// Set x
x = y

Und schließlich gibt es viele weit verbreitete Konstruktionen wie instanceof , indexOf , ...

0voto

Vlad Alivanov Punkte 976

Pro get/set

Wenn eine Klasse viele Methoden hat, ist es besser, Verbpräfixe wie get/set zu verwenden, um die Methoden voneinander zu unterscheiden.

PHP-Beispiel:

$foo->setText('Hello world!');
$foo->prependText('So. ');
$foo->appendText(' And welcome');
$x = $foo->getText();

Übrigens, in der ungarischen Schreibweise werden Präfixe mit einem kleinen Buchstaben geschrieben und beeinträchtigen das Schlüsselwort nicht.

Zähler get/set

Wenn Sie nur zwei Methoden benötigen, ist es einfacher, das gleiche Substantiv im Zusammenhang mit der Verwendung von Parametern zu verwenden.

jQuery-Beispiel:

$('.foo').html();                //get
$('.foo').html('Hello world!'); //set

Beispiele

Für Funktionen und statische Methoden mit Arrays als Parameter verwende ich die folgende Regel:

Wenn Änderungen nur zur Laufzeit erfolgen sollen:

setFoo($arr); // Replace/delete all properties, i.e. if some elements are not passed, the corresponding properties will get empty values.
setFoo([]); // Delete all properties
setFoo(); // Set all properties by default
delFoo($arr); // Delete specified properties
addFoo($arr); // Add/replace specified properties

Wenn Änderungen für immer vorgenommen werden (in DB oder Dateien):

deleteFoo(...); // Delete specified properties
insertFoo(...); // Add specified properties
replaceFoo(...); // Add or replace specified properties
updateFoo(...); // Update specified properties

Für beide Fälle:

$arr = getFoo(); // Get all properties    
$val = getFoo($level1, $level2, ...); // You can obtain the value of the given level, placing the list of arguments
or
$val=getFoo()[$level1][$level2];

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