function - name - the_tags wordpress
Convenciones de nomenclatura de funciones (7)
Estoy escribiendo una biblioteca, así que quiero que sus funciones se nombren de la manera más clara y inteligente posible. Actualmente, utilizo los siguientes principios:
- Nombres autoexplicativos: una función getName () le dirá al desarrollador lo que devuelve, así como setAddress (), isMale (), etc.
- Corto: el nombre de una función debe ser lo más corto posible para que sea fácil de escribir y recordar. Una función getNumberOfPagesInTheBook () no es buena, algo como getBookPageCount () es mejor.
- Uso de prefijos: siempre uso prefijos en las funciones como getName (), setName (), hasHair (), isBlond (), etc.
Me interesa saber si hay algo que me falta. Además, ¿puedes pensar en otros prefijos que no sean, tenga, obtenga y establezca?
Pro get / set
Cuando una clase tiene muchos métodos, es mejor usar prefijos de verbos, como obtener / establecer, para distinguir los métodos entre sí.
Ejemplo de PHP:
$foo->setText(''Hello world!'');
$foo->prependText(''So. '');
$foo->appendText('' And welcome'');
$x = $foo->getText();
Por cierto, en la notación húngara, los prefijos van con una letra pequeña y no restan valor a la palabra clave.
Contador obtener / set
Cuando solo necesita dos métodos, es más fácil usar el mismo nombre en el contexto de usar parámetros.
Ejemplo de jQuery:
$(''.foo'').html(); //get
$(''.foo'').html(''Hello world!''); //set
Ejemplos
Para las funciones y métodos estáticos con arrays como parámetros, uso la siguiente regla:
Si los cambios deberían ocurrir solo en el tiempo de ejecución:
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 los cambios se harán para siempre (en base de datos o archivos):
deleteFoo(...); // Delete specified properties
insertFoo(...); // Add specified properties
replaceFoo(...); // Add or replace specified properties
updateFoo(...); // Update specified properties
Para ambos casos:
$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];
Otros prefijos? Posiblemente "isa", aunque eso solo es aplicable en algunas situaciones.
Algunos idiomas pueden comunicar "get" y / o "set" con otras construcciones (específicamente, en Common Lisp puedes hacer que (setf (get * ...) blah) haga lo mismo que lo que hubieras deseado (set *. .. bla) hacer).
Una cosa más importante que hacer al escribir una biblioteca es usar la misma palabra para describir la misma acción cada vez. no escriba una función llamada getName en una clase y otra función llamada retrieveNumber en otra clase.
Una de las reglas más universales y simples es: los nombres de funciones deben ser verbos si la función cambia el estado del programa y los nombres si se usan para devolver un cierto valor.
Si hay una regla universal, creo que debería ser consistente.
También está el prefijo "on", que se usa ampliamente cuando se trata de eventos (es decir, Java Android: onViewCreated
). Algunos otros prefijos o verbos cortos y / o genéricos (como has, get y set) ampliamente utilizados son:
Prefiero usar sustantivos para captadores simples cuando hay muy poca lógica involucrada (es decir, propiedades) pero usaría el prefijo "obtener" para acciones complejas:
func center() {
return (a + b) / 2
}
Sin embargo, en algunos idiomas donde el uso explícito del prefijo "obtener" se extiende ampliamente (es decir, Android - Java), la práctica común es usar algún verbo como "calcular" (es decir, computeVerticalScrollOffset()
)
Además, en algunos idiomas (por ejemplo, swift ), también puede usar los establecedores de propiedades, por lo que realmente no usa el prefijo "set":
var x: X {
get {
return foo(x)
}
set {
x = bar(newValue)
}
}
// Set x
x = y
Y, finalmente, hay muchas construcciones ampliamente utilizadas, como instanceof
, indexOf
, ...