Está en la página 1de 3

Hola compañeros.

Les paso este correo con motivo de indicar unos ciertos tips, con
respecto a las nomenclaturas y reglas a seguir al momento de definir terminologías
en los "scripts" que se van a construir para los proyectos de desarrollo.

1.- Para la declaración de clases, será solo el nombre del objeto donde la primera
letra será en mayúscula en singular, la instancia será igual o con la diferencia de
que la primera letra será en minúscula, para el manejo de múltiples instancias se
usaran "arrays" y su nomenclatura será el mismo nombre de la clase pero en plural
Ejemplo en php laravel:

- class Persona{}

- $persona = new Persona();

- $personas = array();

- $personas = modelo::all();

2.- La declaración de métodos en las clases (ya sean en la parte de modelo,


controladores, api, o provider que serían los "servicios")
utilizarán el estilo de escritura "CamelCase"
https://es.wikipedia.org/wiki/CamelCase en donde la primera letra será en
minúsculas y de preferencia que sea lo más auto declarativo posible. Ejemplo en
php:

- public function obtenerTodasPersonas(){}

- public function getAllPersonas(){}

inclusive si un método está relacionado a un objeto, se podrían acortar los nombres


de estos (sobreentendiendo que es en el contexto del objeto) ejemplo en php:

- $personas = Persona::getAll() // se sobreentiende que es obtener todas las


personas, ya que el método lo llama el objeto persona

- $personas = Persona::getAllPersonas() // fíjense que se ahorraría una palabra


completa y el código sería "más bonito"

3.- el estilo de escritura CamelCase también se aplicaría a los nombres de


variable, y de preferencia que también sean auto declarativo donde la primera letra
sería minúscula. Ejemplo en php:

- $isAutenticated = LoginProvider::isAutenticated($user);

if($isAutenticated){}

Donde la variable "isAutenticated" se sobreentiende que es un booleano que indica


si o no

4.- Para las declaraciones de clases referentes a controladores, servicios,


utilizar el nombre del objeto a que relaciona con el descriptivo del "contexto"
usando el estilo CamelCase y al ser clases utilizar la primera letra en mayúscula y
en singular, ejemplo:

class LoginProvider{}

$loginProvider = new LoginProvider();


$isAutenticated = $loginProvider->isAutenticated($user);

$personasActivas = PersonaProvider::getAllActivas();

class PersonaController{}

5.- La declaración de constantes en una clase se hará rompiendo el estilo CamelCase


(ya que está globalizado) siendo todo en mayúsculas y para las palabras compuestas
separando con underscore
. Ejemplo:

class Persona{
const TABLE = 'personas';
const TABLE_REF = 'personasPorEmpresas';
}

6.- Hacer un comentario previo a la declaración de métodos indicando el tipo de


dato esperado (por lo menos) ya que, a pesar de que los nombres sean auto
declarativos, el programador debe conocer como llamará al método desde su script
principal

Ejemplo:
/* "nombre del programador" fecha de eleboración
param "userName" string
param "password" string

// se podría colocar un log de cambios, si se llegan a efectuar


mod. 12/07/2017 se añadio la validación de intentos de autenticación (Alex
Llovera)

*/
public function autenticar( $userName, $password )

/* "nombre del programador" fecha de eleboración


param "persona" objeto clase Persona
*/
public function processSalario( $persona )

7.- Para los nombres de las tablas, usar la CamelCase siendo siempre la primera
letra en minúsculas y plural la palabra. Ejemplo:

- personas, personasPorEmpresas, usuarios

8.- para los nombres de los campos y atributos de clase usar estilo CamelCase y
preferiblemente en singular, siendo siempre la primera letra en minúsculas,
ejemplo:

- class Persona{

public $nombre
public $apellido

}
9.- Para la declaración de claves primarias, usar el término "id" simple, se
sobreentiende que si "id" esta en tal tabla, es que es la clave primaria que
pertenece a su tabla. prohibido hacer cosas como "personas.persona_id" ya que sería
redundante, en el caso de las claves foráneas si habría que hacerlo de esa forma,
ejemplo: "usuarios.persona_id". Sólo en el caso de las claves foráneas se rompera
el uso de la CamelCase debido a que laravel en la declaración de relaciones
lógicas, asume que las claves foráneas están bajo ese estilo.

Notas: las nomenclaturas podrían hacerse en inglés o español, ya quedarían a su


criterio, lo que si debería ser mandatorio es no hacer un mezclado, es decir un
spanglish (a menos que se haga referencia a los objetos) por ejemplo:

- Persona::obtenerAll() //Horrible
- Persona::getAll() //mejor
- Persona::obtenerTodos() //también muy chevere