Con toda seguridad muchos todos nosotros hemos visto en algún foro o grupo de Facebook, a más de un usuario pidiendo ayuda sobre algún error en su código, esto no tiene nada de raro, pero cuando vemos el código :nolocreo: pasamos de largo porque ni siquiera se toman la molestia de purgar el código para aislar el problema sino que copian y pegan todo el código que muchas veces contiene un revoltijo de PHP, MySQL, HTML, Etc; también es común toparse con una captura de pantalla que apenas es legible y en texto plano sin resaltado de sintaxis.
Como si esto fuera poco no documentan el código, tampoco respetan ningún tipo de convención de nombres y no utilizan una notación adecuada.
Pero para ser justos hay que recordar que inicialmente todos cometimos este tipo de errores, por esta razón este artículo tiene la pretensión de ser una guía rápida que oriente a los programadores que aún se encuentran en su etapa de formación, para que no sigan pasando estos errores por alto.
1 - Documentar adecuadamente
Una buena práctica, es ir documentando el código a media que este se va generando, aunque en la práctica esto pocas veces se hace porque generalmente el tiempo es acotado y documentar toma algo de tiempo, pero en la medida de lo posible es aconsejable tomarse un tiempo para hacerlo, no nos olvidemos que la memoria es frágil.
"Ley de Alzheimer de la programación: si lees un código que escribiste hace más de dos semanas es como si lo vieras por primera vez"
-- Via Dan Hurvitz
Existen muchas herramientas que nos ayudan a realizar este proceso como por ejemplo phpDocumentor
http://www.phpdoc.org/ que es una herramienta que hace posible la generación de la documentación directamente desde el código fuente de PHP.
La gran ventaja de documentar el código es que este será más fácil de entender y mantener.
"El buen código es su mejor documentación"
-- Steve McConnell
2- Respetar convenciones de codificación
Es importante reconocer que cada lenguaje utiliza sus propias convenciones aunque la diferencia entre uno y otros no son muy relevantes.
Algunas de las convenciones utilizadas en PHP son:
Variables ->
$small_caps
Variables de objetos ->
$Object
Contantes ->
ALL_CAPS_AND_UNDERSCORES
Clases ->
UpperCamelCase
Metodos ->
lowerCamelCase
Namespace /
Package -> small_caps
- Las llaves {} van abajo solo en las clases y métodos, para ningún caso más.
- Los atributos y métodos privados deben llevar delante “_” (estándar Zend), por ejemplo: $_nombre, _hacerAlgo()
- Los atributos deben iniciar siempre en minúsculas, igual que los métodos
Para las funciones el estándar aceptado es lowerCamelCase aunque personalmente prefiero utilizar la nomenclatura nativa de PHP.
- function comprobar_algo()
La idea no es convertirse en un radical fundamentalista de la codificación, lo importante es tener siempre presente que el propósito de todo esto es la legibilidad y facilidad de uso.
Se recomienda seguir los estándares de codificación de PSR-2
http://www.php-fig.org/psr/
3- Identacion y estilos de código
En los lenguajes de programación de computadoras, la indentación es un tipo de notación secundaria utilizado para mejorar la legibilidad del código fuente por parte de los programadores, teniendo en cuenta que los compiladores o intérpretes raramente consideran los espacios en blanco entre las sentencias de un programa.
https://es.wikipedia.org/wiki/Indentaci%C3%B3n
Código sin identar
code: phpfor ($i = 0; $i < 10; $i++) {
for ($j = 0; $j < 10; $j++) {
echo "i=$i, j=$j<br />";
}
}
Código identado
code: phpfor ($i = 0; $i < 10; $i++) {
for ($j = 0; $j < 10; $j++) {
echo "i=$i, j=$j<br />";
}
}
Además de la legibilidad del código la identacion resulta muy útil para visualizar los niveles de anidamiento.
Un código bien formateado es muy importante y ayuda a la comprensión del mismo, la mayoría de los editores de texto como Sublimetext o Notepad++ permiten formatear el código de manera automática, ahora si esas un IDE como Netbeans esto se logra fácilmente con la combinación de teclas shift + alt + f, incluso es posible establecer reglas de formato.
Además existen algunos estilos de codificación reconocidos a nivel global pero la adopción de uno u otro dependerá exclusivamente de cada programador.
K&R style
code: php<?php
function saludar() {
for ($i = 1; $i < 12; $i++) {
echo "hola mundo!<br />";
}
}
Allman style
code: php<?php
function saludar()
{
for ($i = 1; $i < 12; $i++)
{
echo "hola mundo!<br />";
}
}
Whitesmiths style
code: php<?php
function saludar()
{
for ($i = 1; $i < 12; $i++)
{
echo "hola mundo!<br />";
}
}
GNU style
code: php<?php
function saludar()
{
for ($i = 1; $i < 12; $i++)
{
echo "hola mundo!<br />";
}
}
Puedes ver mas informacion sobre este tema en la Wikipedia
https://en.wikipedia.org/wiki/Indent_style
Personalmente me gusta utilizar el estilo Allman aunque utilice más líneas de código.
4 - Evitar el código espagueti
De acuerdo a mi entender este es uno de los puntos más importantes debido a la gran cantidad de programadores que haciendo mal uso del lenguaje terminan generando código espagueti, el cual básicamente se caracteriza por tener una estructura compleja e incomprensible.
Sumado a lo anterior existen una serie de malas prácticas como el excesivo uso de la función require(), no utilizar los namespace, mezclar código HTML, MySQL y PHP.
El código spaguetti parece retorcido y enmarañado como el bol epónimo de spaghetti; seguir el trayecto de una sola hebra a lo largo de la totalidad es extremadamente difícil.
https://es.wikipedia.org/wiki/C%C3%B3digo_espagueti
Como sabemos PHP es un lenguaje de programación poco restrictivo, por lo que es posible comenzar a desarrollar sin tener los conocimientos propios de un desarrollador experimentado que maneja conceptos más avanzados como la programación orientada a objetos, arquitectura de capas, patrones de diseño, modelo de negocios, etc.
Solo me queda recomendarles el libro Código Limpio de Robert C. Martin.
Saludos!