5

Cómo escribir buen código, estándares y buenas prácticas

2140Puntos

hace 9 años

Un problema común de los programadores es que no seguimos estándares a la hora de escribir código. Esto provoca que sea complicado para otros desarrolladores leer el código de otros. Por esta razón y para tratar de erradicar este problema, en este artículo te enseñaré cómo comenzar mantener las estructuras y reglas comunes para dar formato a lo que escribimos. Para comenzar, haré una analogía. No tiene que ver con programación, pero nos ayudará a entender para qué sirven los estándares de escritura. ¿Has escuchado hablar de la norma APA? Básicamente busca que exista un conjunto de guías y reglas internacionales que unifiquen los textos que redactamos. Estas nos dicen, incluso, qué papel usar, tipo de letra, márgenes y otras normas más. En programación esas normas existen. Y debes conocerlas sin importar qué lenguaje uses. Yo, por ejemplo, uso PHP en el Backend; pero si tu trabajas en C#, Java o cualquier otro lenguaje, tu estructura no debe, ni debería, ser diferente a la mía. Siempre he dicho, aprende la sintaxis y luego aprende a programar. Escribir buen código es saber programar. Si ya sabes qué es un if ¡excelente!, ahora busca cómo debe escribirse de forma correcta. Existen programadores que desarrollan su propio estándar con la intención de que nadie les copie la idea. Es decir, el hecho de que no se entienda su código es intencional. Y eso está mal. Sobre todo porque a los seis meses ni ellos sabrán qué hicieron ni por qué lo hicieron. Lo digo por experiencia propia.

Clases

En un lenguaje de programación orientado a objetos OOP existen clases ¿verdad? Y ¿cómo deberían escribirse? [php] <?php namespace Proyecto\CarpetaActual; use Proyecto\OtroComponente\Clase; class MiClase extends ClaseSuperior implements iReglasA, iReglasB { //el cuerpo de la clase } [/php] En el código que vemos arriba podemos observar que extends e implements se usan en la misma línea y que las llaves están en línea. Si todas nuestras clases se escribieran así, nuestra lectura sería automática. Y si todos seguimos una estructura, entenderíamos mas rápido su utilidad y razón de ser. Por otro lado, es válido que la lista de implements se escriba en varias líneas. Pero va indentada una sola vez. Es decir, a sólo cuatro (4) espacios de la izquierda, sin tabular. [php] <?php namespace Proyecto\CarpetaActual; use Proyecto\OtroComponente\Clase; class MiClase extends ClaseSuperior implements iReglasA, iReglasB { //el contenido de la clase } [/php] Las clases están compuestas por propiedades, constantes y métodos. Y también existe la manera de escribirlos correctamente. [php] <?php namespace Proyecto\CarpetaActual; use Proyecto\OtroComponente\Clase; class MiClase extends ClaseSuperior implements iReglasA, iReglasB { public $velocidad = 0; } [/php] Es importante indicar su visibilidad (public, en este caso) y no colocar como prefijo el underscore o guión bajo; sin importar si la propiedad es privada o protegida. Ahora veamos cómo declarar los métodos. [php] <?php namespace Proyecto\CarpetaActual; use Proyecto\OtroComponente\Clase; class MiClase extends ClaseSuperior implements iReglasA, iReglasB { public $mipropiedad = 0; public function miMetodo($parametro1, $parametro2) { //el contenido del metodo } } [/php] De igual manera que en las propiedades, también debe colocarse la visibilidad. En este caso, mi método es public. Su nombre no debe tener como prefijo el underscore o guión bajo. Y después del nombre del método debe venir inmediatamente el paréntesis. Además, igual que en las clases, las llaves deben estar en línea. ¿Notaste que mi método tiene parámetros o argumentos? Es importante que después de la coma, exista un espacio. Por cierto, los parámetros pueden escribirse en varias líneas; sólo que un parámetro por línea e indentado una sola vez. [php] <?php namespace Proyecto\CarpetaActual; use Proyecto\OtroComponente\Clase; class MiClase extends ClaseSuperior implements iReglasA, iReglasB { public $mipropiedad = 0; public function miMetodo( $parametro1, $parametro2 ){ //el contenido del método } } [/php] En el código arriba podrás notar cómo cierra el paréntesis del método y dónde abre la llave. De esta manera, tenemos una clase más limpia, de fácil manejo y mantenible. Otra regla común en una clase es llamar métodos entre si, así deberían escribirse: [php] <?php namespace Proyecto\CarpetaActual; use Proyecto\OtroComponente\Clase; class MiClase extends ClaseSuperior implements iReglasA, iReglasB { public $mipropiedad = 0; public function miMetodo( $parametro1, $parametro2 ){ //el contenido del método } public function miSegundoMetodo(){ $variable = 0; $variable2 = true; $this->miMetodo($variable, $variable2); } } [/php] Puedes ver que no existen espacios en mi llamada. En específico a los paréntesis y método. Sólo debe existir un espacio después de la coma y los parámetros pueden estar en varias líneas pero indentándolos una vez. Veamos: [php] <?php namespace Proyecto\CarpetaActual; use Proyecto\OtroComponente\Clase; class MiClase extends ClaseSuperior implements iReglasA, iReglasB { public $mipropiedad = 0; public function miMetodo( $parametro1, $parametro2 ){ //el contenido del método } public function miSegundoMetodo(){ $variable = 0; $variable2 = true; $this->miMetodo( $variable, $variable2 ); } } [/php] Colocar nuestras clases, propiedades, métodos, parámetros y nombre de archivos en ingles es parte del estándar. Pero para entender mejor este ejemplo, las escribí en español. En este articulo utilicé mucho la palabra indentar. Pero, ¿qué es realmente? Indentación es un termino que usamos mucho en la informática. Es básicamente mover un bloque de código hacia la derecha insertando espacios o tabuladores. Pero es importante mencinar que en la actualidad sólo se usan cuatro espacios. El objetivo de indentar es mejorar la legibilidad de nuestro código. Un código indentado es un código que se puede leer. Existen reglas para condicionales, bucles y comentarios también. Pero les dedicaré más tiempo en la siguiente entrega de este artículo. Estos conceptos son importantes para mi, cuéntame en los comentarios si ahora lo son para ti también.
Italo
Italo
iitalomorales

2140Puntos

hace 9 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
1
968Puntos

Sugiero usar las normas APA para escribir este interesante texto de aquí arriba

1

Como critica constructiva habría quedado mejor con ejemplos de bloques de código en lugar de un texto plano.

Saludos

0
2984Puntos

Yo tengo un preferencial gusto por las normas de escritura del libro Codigo limpio de robert c. martin, aunque no programo en web “aun” muchos de mis programas o se ajustan a la empresa o lo normalizamos cuando arranca el proyecto.

Mi forma muy especifica en c# para POO en las clases es secciones para contener los objetos

#Region Variables Globalesint Px, Py; //Aqio pongo todas las variables globales con las que tengo, nunca inicializadasfloat Dst;  
#endregion#Region Constructores/// Aqui defino de que trata el metodo, acceso/// Initializes a new instance of the <see cref="Repository"/> class./// </summary>/// <param name="unitOfWork">The unit of work.</param>public constructor()
	{	}

	public constructor(int Px,Py)
	{
		this.Px=Px
	}


#endregion#Accesos//Todos los get y set#endregion#metodos publicos#endregion#Metodos privados#endregion#Operators#endregion

De esta forma, se que si busco un método o algo para modificar o crear se donde ponerlo y encontrarlo, junto con otras reglas mas.