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:
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?
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.
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.
Jettes un coup d'oeil à
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).
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é.
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
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];
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
, ...