web-dev-qa-db-fra.com

Conventions de dénomination des fonctions

J'écris une bibliothèque, je souhaite donc que ses fonctions soient nommées de manière aussi claire et intelligente que possible. Actuellement, j'utilise les principes suivants:

  1. Noms explicites: une fonction GetName () indiquera au développeur Ce qu’elle renvoie, ainsi que SetAddress (), isMale (), etc.
  2. En bref: un nom de fonction doit être aussi court que possible pour que Soit simple à saisir et facile à À mémoriser. Une fonction GetNumberOfPagesInTheBook () n'est pas Bonne, quelque chose comme GetBookPageCount () est meilleure.
  3. Utilisation de préfixes: J'utilise toujours les préfixes Dans les fonctions telles que GetName (), setName (), hasHair (), IsBlond (), etc.

J'aimerais savoir s'il me manque quelque chose. Aussi, pouvez-vous penser à d'autres préfixes que celui-ci, a, obtenez et définissez?

29
Tower

Une des règles les plus simples et les plus universelles est la suivante: Les noms de fonction doivent être des verbes si la fonction modifie l’état du programme et des noms s’ils sont utilisés pour renvoyer une certaine valeur.

51
Carl Smotricz

Une autre chose importante à faire lors de l'écriture d'une bibliothèque est d'utiliser le même mot pour décrire la même action à chaque fois. n'écrivez pas une fonction nommée getName dans une classe et une autre fonction nommée retrieveNumber dans une autre classe.

4
Moshe Levi
2
Adriaan Stander

Autres préfixes? Peut-être "isa", bien que cela ne soit applicable que dans certaines situations.

Certaines langues peuvent communiquer "get" et/ou "set" avec d'autres constructions (en particulier, dans Common LISP, vous pouvez faire (setf (get * ...) blah) faire la même chose que ce que vous auriez voulu (set *. .. bla) faire).

1
Vatine

Pro get/set

Lorsqu'une classe a plusieurs méthodes, il est préférable d'utiliser des préfixes de verbe, tels que get/set, pour distinguer les méthodes les unes des autres.

Exemple PHP:

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

Soit dit en passant, les préfixes en notation hongroise sont accompagnés d'une petite lettre et n'enlèvent rien au mot clé.

Compteur get/set

Lorsque vous n'avez besoin que de deux méthodes, il est plus facile d'utiliser le même nom dans le contexte de l'utilisation de paramètres.

exemple jQuery:

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

Exemples

Pour les fonctions et les méthodes statiques avec des tableaux en paramètres, j'utilise la règle suivante:

Si des modifications ne doivent avoir lieu qu'au moment de l'exécution:

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

Si des modifications seront apportées pour toujours (en base de données ou en fichiers):

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

Pour les deux cas:

$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];
0
Vlad Alivanov

S'il existe une règle universelle, je pense qu'elle devrait être cohérente.

Il existe également le préfixe "on", qui est largement utilisé pour traiter des événements (c'est-à-dire Java Android: onViewCreated ). Certains autres préfixes ou verbes courts et/ou génériques (tels que has, get et set) largement utilisés sont:

Je préfère utiliser des noms pour des accesseurs simples quand il y a très peu de logique impliquée (c'est-à-dire des propriétés), mais j'utiliserais le préfixe "get" pour les actions complexes:

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

Toutefois, dans certaines langues où l’utilisation explicite du préfixe "get" est largement étendue (par exemple, Android - Java), la pratique courante consiste à utiliser un verbe tel que "calculer" (par exemple computeVerticalScrollOffset() )

De plus, dans certaines langues (par exemple, Swift ), vous pouvez également utiliser des paramètres de propriété afin de ne pas utiliser le préfixe "set":

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

// Set x
x = y

Et enfin, il existe de nombreuses constructions largement utilisées telles que instanceof , indexOf , ...

0
FranMowinckel
  1. Conventions de dénomination pour Java
  2. Conventions de dénomination pour .Net
  3. Conventions de dénomination pour C++
0
Suraj Chandran