Comunidad de diseño web y desarrollo en internet online

21 errores comunes programando en PHP

Leyendo en Zend.com, encuentro una completa lista de errores comunes de los programadores de PHP.
Aunque muchos de los que programamos constantemente en PHP hemos superado varios puntos, siempre hay cosas en las que caemos, pudiendo mejorar la calidad de nuestro código.

Los errores están divididos en 3 partes, siendo los primeros los mas "benignos" y los últimos, "críticos". Comentare los más importantes.

Parte 1

Uso impropio del printf

Abusando de la semántica
Esto es, básicamente, no usar una misma variable para guardar en un momento números, en otras cadenas de texto, o hacer funciones que por parámetros reciban variables de varios tipos de datos.
Una adecuada forma es la declaración de variables antes de usarlas, mantener un mismo tipo de datos para todas las variables, etc.

Falta de documentación por línea
En pocas palabras, es saber crear comentarios adecuados, no hacer un comentario por línea, pero tampoco una palabra por función, además de hacerlos comprensivos, lógicos y no estupidos, como:

Código :

//Esta función imprime
function imprimir($datos){
    echo $datos;
}


Creación de demasiadas variables temporales

Rescribir funciones existentes de PHP
Esta es muy común, si no sabes que hace PHP y tienes un problema para lo que PHP tiene ya una función que lo soluciona, pero haces una función propia que haga lo mismo.
Hay que leer xD

No separar el lado del cliente del lado del servidor
Lo que muchos principiantes hacen, llenar de echos el código HTML, no hacer plantillas, ni siquiera funciones para separar lógicamente la parte de PHP de la parte de HTML.

Usar paradigmas del siglo pasado
PHP es muy flexible, por lo que puedes usar aun cosas como "if endif" o "while endwhile", pero eso es taaan viejo, como usar GOTOs.
Otro ejemplo similar es seguir usando variables globales al recibir valores de formularios, hay que actualizarse.

Parte 2

No seguir convenciones básicas en los nombres
Poner cosas como $xdb2 a una variable o convfunxml() a una función, son practicas muy malas, que llevan al desastre al mantener una aplicación. En las variables, lo mas recomendado es mantener "simples" las cosas, mientras que en las funciones, hacerlas lo mas "verbales" posible seria lo mejor.

Usar de una manera horrible la conexión a bases de datos
Gente que trae todos los resultados de una consulta solo para ver si es mayor que cero, hacer la consulta columna por columna en vez de traer un recordset completo, usar PHP para ordenar los resultados en vez de SQL, esas son formas horribles de conectarse a una DB.

Falta de detección de errores
Asúmanlo, ocurrirán errores, sea porque al hosting se le lleno la tabla de temporales, porque se acabo el espacio en disco que tenían, porque un usuario encontró una manera de saltarse una validación de datos o por lo que sea, siempre, en cuestiones delicadas (Consultas, escritura al disco, etc) hay que hacer control de errores.

Sobrepasarse con la programación orientada a objetos
PHP aun no esta 100% orientado a objetos de una manera estricta, de modo que aunque usemos MVC, frameworks como PEAR entre otras muchas cosas, podemos llegar a sobrepasarnos en el uso de POO en PHP, creando una serie de clases, métodos y propiedades exagerada que probablemente nos den mas problemas que beneficios en el futuro. No hay que exagerar

Mal uso de las expresiones regulares
Aunque es un tema muy avanzado, las expresiones regulares son muy útiles en muchos casos donde debemos analizar cadenas de texto raras para obtener resultados; pero son lentas, por lo que no hay que usarlas para tooodo, como reemplazar patrones simples en cadenas, buscar un carácter, etc.
Existen muchas funciones de manejo de strings ya hechas y más fáciles de usar.

Programar en PHP como si fuera otro lenguaje
Mucha gente que empieza en PHP, viene de otros lenguajes y con ello, traen también sus mañas y costumbres de acuerdo a cada uno de ellos.
Los de Perl que les fascina programar todo en una sola línea, los de Java que directamente hacen un framework orientado a objetos de modo que en el código HTML solo haya $pagina = new Pagina();, los que se ponen a renombrar o rescribir funciones inherentes de PHP, etc. De nuevo, hay que leer.

No ser consciente de la seguridad
PHP puede ser programado elegante o terriblemente... y aun así dar el mismo resultado a los ojos del usuario; cosas como las protecciones básicas de seguridad son olvidadas.
No permitir que, en un campo que se usara en una consulta a una DB, un usuario ponga comillas simples o punto y coma, tomar todos los valores raros y hacerles "escape" (Es decir, poner un backslash en frente de ellos) y en general validar dentro de PHP todos los valores que puedan haber sido escritos a mano es una responsabilidad nuestra.

Parte 3

Cortar y pegar; el camino incorrecto
Siempre haces la misma función de validar un correo electrónico, la misma de conectarse a la base de datos, etc... ¿Copias y pegas cuando lo haces?
Es mas optimo crear una librería de tus propias funciones, también puedes usar librerías como PEAR y demás, pero recuerda, solo usa librerías de una fuente conocida o crea las tuyas.

No tener guías de estilo de codificación en un proyecto
Iniciar proyectos "por mis huevos" siempre ha sido un error; cuando inicias un proyecto, sin importar si eres tú solo o tienes un grupo de trabajo, hay que definir unos lineamientos de codificación.
Que variables son globales y como deberían ser marcadas como global, la estructura de las carpetas de código, convenciones de los comentarios, procesos de documentación, etc.

No hacer una revisión de código
Revisar nuestro código después de hecho, ver que hace, que se puede mejorar, etc, es algo que siempre se obvia, mucho mas en nuestra cultura donde todo es "urgente" (Sobre todo hacer prilouders).
¿Cuál era el propósito de X código?, ¿Cómo se relaciona el archivo X con los demás en el proyecto?, ¿Cómo verifica los errores el programa?, ¿Dónde podría encontrar errores el usuario?... etc.

Hacerle "hacks" al código PHP abusando de fallos de diseño
Tu lo sabes, tu sabes cuando estas haciendo un código feo, sabes cuando estas solucionando algo de la peor manera, sabes cuando estas metiendo a las patadas un código para que algo funcione... no lo hagas, recapacita, piensa en los niños.

Excluir al usuario del proceso de diseño
El usuario, ese engendro infernal que nos hace eliminar, corregir, cambiar, actualizar, repetir, borrar y maldecir. ¿Por qué no lo metemos al proceso, hacemos prototipos de prueba, le mostramos todo, vemos si vamos por buen camino? La mayoría de problemas con los usuarios finales es por culpa de nuestra discriminación (con razón) hacia ellos... Cada vez que ignoras a tu usuario, Dios le quita un punto y coma a una parte aleatoria de tu código.

No apegarse al plan del proyecto
¿Seguiste el análisis, diseño e implementación como estaban planeados?, de hecho, ¿Lo hiciste si quiera en ese orden?; cuando se planea un proyecto y en un punto debes salirte del esquema planteado, sabes que las cosas irán mal.

Perderte en el tiempo
Los programadores, por defecto, son optimistas; "Si, eso sale en un mes", decimos.
No subestimes la complejidad de nada, tiende a pedir el doble de lo que necesitas, de cualquier manera, siempre lo querrán en la mitad del tiempo. Conocete a ti mismo, conoce tu trabajo, pide el tiempo real, pide mas que eso y se conciente de cuanto código llevas, cuanto te falta y cuanto tiempo tienes.




No solo a PHP aplican estos "errores comunes", pero de cualquier manera tenerlos en cuenta muy seguramente te ayudara en la mayoría de proyectos que inicies.
Aunque claro, siempre hay gente que jamás cae en estos errores.

¿Como tu?

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate