miércoles, 6 de julio de 2016

FORO Errores Vs Buenas prácticas en PHP?

Tema:
Errores Vs Buenas prácticas en PHP? En el mundo del desarrollo de software (páginas web, aplicaciones web, aplicaciones escritorio, apps) existen infinidad de herramientas que permiten el diseño y desarrollo de estas, todas ellas con ventajas y desventajas; pero lo importante es evaluar muy bien los diferentes elementos (licenciamiento, conocimiento, personal capacitado, interfaz, etc) para lograr seleccionar la más óptima para nuestros propósitos. En el caso del desarrollo web PHP es una muy buena elección. Sin embargo sin importar la herramienta usada, la codificación presenta una serie de errores de sintaxis y de lógica, es por ello que te invito a compartir algunos de estos y sus soluciones, de acuerdo a lo que indica el foro.
  Ejemplo 1

Hace 8 días OSCAR EDUARDO MORA MARTOS
RE: Tema: Errores Vs Buenas prácticas en PHP?
CONTRAER
Buenas noches pues pues los errores que conoszo mas comunes  están divididos en 3 partes, siendo los primeros los mas "benignos" y los últimos, "críticos". Comentare los más importantes:

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;
}
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.
Rescribir funciones existentes de PHP

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.

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.

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.

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.
pues para mi la buena practica en la programacion de php seria no volver a comerter los errores si no correjirlos al mismo tiempo.


Ejemplo 2

RE: Tema: Errores Vs Buenas prácticas en PHP?
Principio del formulario
Un programa está formado por las palabras reservadas del lenguajecadenas, variables, constantes o funcionesparéntesisllavescorchetessignos depuntuaciónoperadores, etc, que además deben sucederse en un ordendeterminadoCuando encuentra un símbolo no esperado, PHP indica el tipo desímbolo que ha encontrado sin esperarlo.
<?php
print<p>Hola</p>\n
?>
Parse error:  syntax error, unexpected '<' in ejemplo.php on line 2

1.       En este caso, el motivo del error es que un trozo de texto debe estar contenido en unacadena (rodeado por comillas simples o dobles). y cuando encuentra el carácter < (querepresenta el operador matemático de desigualdad), no puede entenderlo como tal.





 Buena práctica para evitar este error es tener en cuenta que para escribir untexto, es necesario que este rodeado de comillas simples o dobles. Lo que hacenlas comillas dobles es reemplazar las variables por su valor. En cambio lascomillas simples no leen el valor, solo entregan texto plano, no muestran su valor.
Ejemplo:
<?php
print “<p>Hola</p>\n”
?>


Hola
En el segundo error vemos:
<?php
primt "<p>Hola</p>\n";
?>
Parse error:  syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in ejemplo.php on line 2



En este caso, el motivo del error es que primt no es una palabra reservada dellenguaje ni una función (debería decir print) y cuando encuentra la cadena nosabe cómo seguir.
Buena práctica para evitar este error es  tener en cuenta como se debe escribir, ya que print en php no es realmente una función (es un constructor delenguaje), por lo tanto no es necesario usar paréntesis para indicar su lista deargumentos.
Ejemplo:
<?php
print "<p>Hola</p>\n";
?>



Hola
Tercer error que veremos acontinuación:
<?php
print "<p>Hola</p>\n"
print "<p>Adios</p>\n"
?>

Parse error:  syntax error, unexpected T_PRINT in ejemplo.php on line 3

1.       En este caso, el motivo de error es que la primera sentencia no finaliza en punto y coma (;) y no se esperaba el segundo print. Por cierto, la última sentencia de un bloque php puede no finalizar en punto y coma, aunque se recomienda hacerlo.   Los paréntesis, llaves y corchetes deben estar emparejados (por cada signo abierto debe hacer uno cerrado).


La buena práctica para evitar este error es que debemos tener en cuenta cada una de estas instrucciones debe terminar con un punto y coma (;).
Ejemplo:
<?php
print "<p>Hola</p>\n";
print "<p>Adios</p>\n";
?>


Hola

Adios
Final del formulario


No hay comentarios:

Publicar un comentario