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
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.
Por Sisco el 15 de Noviembre de 2005
Por XKlibur el 15 de Noviembre de 2005
Por Prozac el 15 de Noviembre de 2005
JUAS! bueno bueno si, es verdad pero de alguna manera hay que hacer que las cosas funcionen pero siempre hay luz al final del camino y mas temprano que tarde uno aprende a hacer las cosas mejores (no del todo bien pero si mejores)
Muy bueno el articulo, aunque muchos de los puntos se dan no solo en PHP
Por Aoyama el 15 de Noviembre de 2005
Con razón luego me falla el código!!!!
Muy buen artículo, y si creo que cometo varios de esos errorcillos, sobre todo por andar siempre a las carreras, pero ahora que ya empece Sendero! todo ira bien ordenadito, documentado y cuidadito...
Te falto una más, algo que he visto en los programadores noveles... la mayoría de ellos...no usa la identación !!!!!!... Eso es crítico para entender tú código... (A más de uno he reprobado por eso... si, si soy un maldito ya lo sé... )
Por Janmi el 15 de Noviembre de 2005
Muy interesante el artículo, sí señor.
Me atrevería a destacar la excesiva confianza de los programadores en el tratamiento de formularios en JavaScript... ¿Y si me guardo la página que envía el form en mi propio equipo, me cargo los controles JVS y envío a la página de destino lo que me de la gana?
Para evitar eso, creo que habría que acordarse de hacer un control de parámetros redundante, pero en PHP...
¿Qué os parece?
Por Jaime Olmo el 15 de Noviembre de 2005
Por rolv el 15 de Noviembre de 2005
Freddie® :
sabes cuando estas metiendo a las patadas un código para que algo funcione... no lo hagas, recapacita, piensa en los niños.
Holi chit.....
Master Freddie...gracias por enseñarnos la luz....de nuevo....
Sin duda: leer, capacitarte continuamente, y no dejar que la soberbia, nos corróa las entrañas,pensando que ya sabemos y somos unos expertos; es algo de gran ayuda...
Sus comentarios, acerca del tiempo de entrega, son tambien, bastante acertados...
Gracias, buena manera de re-empezar la semana... : )
Por Darky el 15 de Noviembre de 2005
Por Pedro el 15 de Noviembre de 2005
Es un EXCELENTE TEMA!
De las que escribiste, me identifico en algún momento de la existencia con:
Código :
Creo que parte de la sobrecarga de trabajo, a veces se debe al último punto, solemos ser demasiado "optimistas"...
Feliciades!
P.D. Le estoy mandando el link a un par de personas que conozco
Por Freddie el 15 de Noviembre de 2005
Aoyama :
Y mira que en Flash solo es cuestión de oprimir el boton de autoformato.
Por joX3 el 15 de Noviembre de 2005
Por Maikel el 15 de Noviembre de 2005
Muy bueno el artículo , y en muchas cosas aplica para todos los lenguajes de programación
Creo que me servirá para un proyecto nuevo
PD: para lo que se creen programadores deberian leerlo detalladamente.
Por choco el 15 de Noviembre de 2005
Por Dario! el 16 de Noviembre de 2005
Por Dano el 16 de Noviembre de 2005
Como nota,
Eso es desconocimiento de SQL, no tanto de php.
La parte de php, que pudiera tener relación, tal vez se refiera a una mala invocación, o redundancia, en el uso de funciones como mysql_connect; a utilizar ciclos for y while, para contar el número de registros de una consulta, etc.
Por MorphX el 16 de Noviembre de 2005
Freddie, donde se puede uno estudiar un curso a distancia de buenas MANERAS del coder
Margnifico articulo, si señor...
Por Socr@m el 16 de Noviembre de 2005
Me senti identificado en algunos puntos y sobretodo en "Excluir al usuario del proceso de diseño".
Espero aprender a tenerles paciencia a esos malditos
Nos vemos, exitos....
Por dangel_sc el 22 de Noviembre de 2005
Por accalfredo el 23 de Noviembre de 2005
Por lulu el 23 de Noviembre de 2005
Por pepe el 23 de Noviembre de 2005
Por lolo el 23 de Noviembre de 2005
Por lolo el 23 de Noviembre de 2005
Por Julia el 09 de Mayo de 2006
Por elguru el 09 de Mayo de 2006
Por Jorgelig el 09 de Mayo de 2006
Salu2