Guía de buenas prácticas para desarrolladores web

9,680
-1

Published on

Guía de buenas Prácticas para desarrolladores PHP

Published in: Technology

Guía de buenas prácticas para desarrolladores web

  1. 1. Guía de Buenas Prácticas para Desarrolladores PHP<br />Juan Minaya leónminayaleon@gmail.com<br />
  2. 2. Agenda<br />Programación<br />IDE<br />Base de Datos<br />Código Estándar<br />Documentación<br />Herramientas y Procesos<br />Colaboración<br />Control de Código<br />
  3. 3. IDE (Integrated development environment)<br />NetBeans ¿Por que?<br />Soporte HTML, JavaScript y CSS<br />Autoformato de Código<br />Refactoring <br />Autocompletado<br />Generador de Código<br />Cliente SQL (SQL Server, MySQL, Oracle, etc.)<br />Resaltado de código (PHP, JS,CSS,HTML,SQL, etc.)<br />Clientes: FTP, SVN, etc.<br />Plugins: phpDocumentor, Zend Framework, Symfony, Smarty, phpUnit, phpDebug, etc.<br />
  4. 4. IDE (Integrated development environment)<br />MySQL Workbench<br />Generación de Diccionario de Datos<br />Ingeniería Inversa , Sincronización<br />Generación de Formal Normales (1FN, 2FN, 3FN)<br />
  5. 5. Diseño de Base de Datos <br /><ul><li>¿Usar Mayúsculas, Minúsculas ó ambas?
  6. 6. ¿Cuál se ve mejor? </li></ul>CLIENTE, cliente, Cliente, ClienteCuenta, cliente_cuenta, CLIENTE_CUENTA<br /><ul><li>¿Qué nos dicen nuestros Proveedores?</li></ul>Mysql Server, SQL Server, Oracle<br />
  7. 7. Diseño de Base de Datos <br />Mysql Server<br />Distingue entre mayúsculas y minúsculas sólo los nombres de la base de datos y tablas, más no de sus columnas.<br />Variable de configuración lower_case_table_names, valor:<br />0 -> Las tablas se almacenan con la sensibilidad especificada en la sentencia de creación (Linux). SELECT * FROM cliente; SELECT * FROM CLIENTE; (ERROR)<br />1 -> Las tablas se almacenan convirtiendo sus nombres a minúsculas (Windows y Mac). SELECT * FROM cliente; SELECT * FROM CLIENTE; (OK)<br />2 -> Los tablas se almacenan con la sensibilidad especificada en la sentencia de creación. SELECT * FROM cliente; SELECT * FROM CLIENTE; (OK)<br />
  8. 8. Diseño de Base de Datos <br />Mysql Server <br />Cita 1: Crear y referirse a bases de datos y tablas usando siempre minúsculas. Esto es lo recomendado para lograr máxima portabilidad y facilidad de uso. Fuente: Documentación Mysql.<br />Cita 2: Si se utilizan tablas InnoDB, se debería establecer lower_case_table_names en 1 en todas las plataformas para forzar a que los nombres sean convertidos a minúsculas. Fuente: Documentación Mysql.<br />
  9. 9. Diseño de Base de Datos <br /><ul><li>¿Usar Plural, Singular ó ambas? </li></ul>Todo parte del concepto de entidad (cliente, cuenta, factura, producto, etc.)<br />Modelo ER pretende representar la “realidad”, nombrar las tablas en plural sería la mejor opción, pero….<br />En la implementación usas muchos identificadores: botones, formularios, grillas, etc. Todos referidos a una entidad (btnCliente, frmCliente) no colocas (btnClientes, frmClientes, chkClientes).<br />Si tuviésemos que representar (cuentas de un cliente) al estilo plural tendríamos estas opciones: cuentas_clientes ó cuentas_cliente, si usaríamos el estilo singular sólo habría una opción: cuenta_cliente.<br />En otras palabras es una cuestión de costo/beneficio<br />
  10. 10. Diseño de Base de Datos <br />¿Se debe usar prefijos?<br />ISO/IEC 11179 (normalización de metadata y metada registry )<br />No recomienda el uso de Prefijos ni Sufijos, salvo en los casos que en una sola base de datos se compartan muchos proyectos<br />Ejemplos de buenas practicas: Cliente_Cuentas, Cliente_Cuenta<br />SQL Server y Oracle han adoptado este estándar<br />MySQL recomienda usar minúsculas<br />
  11. 11. CONSEJO A<br />En MySQL nombra las base de datos y tablas con minúsculas usando el estilo singular, para el caso de nombres compuestos usar underscore ( _ ), para SQL Server y Oracle sigue el estándar ISO/IEC 11179<br />
  12. 12. PHP Código Estándar<br />Seguir la Guía de Estilos Zend (DRAFT)<br />General<br />Para archivos que sólo contengan código PHP la etiqueta de cierre ( “?>” ) debe ser omitida.<br />Indentation<br />Usar como indent (sangría) 4 espacios.<br />La longitud máxima de cualquier línea de código PHP es de 120 caracteres.<br />
  13. 13. PHP Código Estándar<br />Convención de Nombres<br />Se seguirá la guía de estilos desarrollada por Zend para su proyecto opensource ZF.<br />Clases<br />El nombres de las clases relaciona directamente con los directorios donde se almacenan. Db/Mysql/Adapter.php -> Db_Mysql_Adapter<br />Sólo permitido caracteres alfanuméricos y el underscore (sólo reemplaza el separador de ruta)<br />El uso de números no está recomendado.<br />
  14. 14. PHP Código Estándar<br />Interfaces<br />Debes seguir la misma convención para las clases, pero deberán terminar en _Interface, ejemplos:<br />Application_Db_Interface, Zend_Log_Interface, etc.<br />Funciones y Métodos<br />Sólo permitido caracteres alfanuméricos, underscore no está permitido. El uso de números no está recomendado.<br />Deben empezar siempre con letra minúsculas. Si contiene más de una palabra, la 1ra letra de cada palabra debe empezar con mayúculas (CamelCase).<br />Ejemplos: obtenerDatos, registrarUsuario, etc.<br />
  15. 15. PHP Código Estándar<br />Variables<br />Sólo permitido caracteres alfanuméricos, underscore no está permitido. El uso de números no está recomendado.<br />Como las funciones debe empezar con letra minúscula y usar la convención CamelCase.<br />Para variables que son declaradas como privadas o protegidas se debe agregar underscore al inicio. Ejemplo: $_tipos, $_nClientes, etc.<br />Las variables deben describir los datos que van a almacenar, usar $i, $n, $j sólo en bucles.<br />
  16. 16. PHP Código Estándar<br />Constates<br />Deben ir en letras mayúsculas.<br />Sólo permitido caracteres alfanuméricos y carácter underscore para separar palabras que conforman la constante.<br />Para las constates definidas como miembros de una clase se usará el modificador “const”, para constantes globales se usará “define”.<br />
  17. 17. PHP Guía de Estilos<br />Shorttags ( “<?” )no están permitidos.<br />Strings<br />Para cadenas se usará comilla simple.<br />Para cadenas que contengas apostrofes o variables de sustitución se usará comilla doble<br />Para concatenar cadenas use el operador “.”<br />
  18. 18. PHP Guía de Estilos<br />Clases, Métodos y Funciones<br />Deben ser nombradas de acuerdo a la convención de nombre de Zend.<br />La llave de inicio deben ser escrita una línea debajo del nombre de la clase, métodos ó función.<br />Deben tener un bloque de documentación que se ajusta al estándar de phpDocumentor.<br />Sólo se permite una sola clase en cada archivo PHP.<br />Los métodos deben ser declarados especificando su visibilidad (private, protected, o public)<br />
  19. 19. PHP Guía de Estilos<br />
  20. 20. CONSEJO b<br />Zend es la empresa oficial detrás de PHP, la guía de buenas prácticas desarrollada por esta empresa es de lectura obligatoria par5a todo programador<br />
  21. 21. Documentar tu Código<br />Programa pensando que la persona que mantendrá tu código es un psicópata maniaco que sabe donde vives … que si te encuentra te meterá terror!!!.<br />
  22. 22. Documentar tu Código<br />phpDocumentor<br />Herramienta estándar para documentar código PHP.<br />Crea documentos HTML, PDF, CHM.<br />Se puede usar desde la consola de comandos ó integrarlo a un IDE (NetBeans Zend Studio ó Eclipse)<br />Recomiendo documentar las funciones, clases y métodos que forman pate del dominio de la aplicación (capa de negocio).<br />
  23. 23. Documentar tu Código<br />Clases<br />Deben tener una pequeña descripción sobre el uso de la clases<br />Las variables definidas deben tener usar el tag @var <br />Métodos<br />Los parámetros de las funciones deben usar el tag @param<br />Si tienen variables de retorno se debe usar el tag @return<br />Si existen bucles condicionales se deberá detallar el funcionamiento básico del mismo usando comillas dobles (“//”)<br />
  24. 24. Documentar tu Código<br />
  25. 25. Documentar tu Código<br />
  26. 26. Documentar tu Código<br />
  27. 27. ¿PREGUNTAS FINALES?<br />¿Dudas?<br />
  28. 28. Bibliografía<br />Zend Best Practices<br />ISO/IEC 11179<br />SQL Server Best Practices <br />Java Best Practice<br />PHP Architect<br />

×