Guia de estilo PHP

August 24th, 2006 Posted in Informatica

Tras pasar por varios programadores en la empresa, ver que cada uno hace las cosas como hace o como quiere, y sin el mas minimo control ni porque un compañero suyo pueda leerlo, ni para el que venga detras pueda seguir sobre tu trabajo, yo y mi fiel programador Luismi decidimos hacer una guia de estilo, que actualmente, no tiene estilo.

Es una guia con algunos preceptos basicos, que con el tiempo se ira aumentando, con la finalidad de que todos hagamos las cosas bien, de maneras similares y si una persona se va, poder continuar los proyectos sin problemas ni hacer uso de ingenieria inversa. Solo decir, que algunas cosas de hacen sobre un sistema de programacion propio Necostek Framework, que es un CMS con algunas funciones basicas para aligerar el trabajo.
Bueno, ahi va:

<meta content="OpenOffice.org 2.0 (Linux)" name="GENERATOR" /><meta content="20060823;17085800" name="CREATED" /><meta content="20060823;21000400" name="CHANGED" /><br /> <style type="text/css"> <!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } --> </style> <p align="center" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="6" style="font-size: 22pt"><strong>GUIA DE ESTILO <font size="1" style="font-size: 5pt">rev 23/8/06-02</font></strong></font></p> <p align="center" style="margin-bottom: 0cm"> <p align="center" style="margin-bottom: 0cm"> <ul> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Las funciones se escribirán en minúsculas y si la palabra es compuesta la primera letra de la segunda palabra ira en mayúscula (Ej: getUsersList();), mientras que las variables se escribirán siempre en minúsculas.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Las funciones en su apertura deben estar documentadas SIEMPRE así como sus parámetros.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Al inicio de cada fichero se incluirá una cabecera con el uso del fichero y para que sirve, autor, versión y fecha.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Los nombres deberán ser descriptivos de las variables y funciones.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Los nombres de funciones y variables deberán estar escritos en Ingles o Español, en el caso del Español siempre se deben usar los infinitivos de los verbos.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">En los bucles cortos las variables temporales deben llamarse $i, $j, $k consecutivamente.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">La identación se deberá hacer obligatoriamente con TAB y nunca con espacios.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Las REGISTER_GLOBALS estarán desactivadas por defecto. Es decir que las variables que se pasen de una pagina a otra deberán leerse con $_GET, $_REQUEST o $_POST.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Las conexiones de las base de datos deben ser cerradas nada mas acabar de usarlas.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Las MAGIC QUOTES estarán desactivadas por defecto. Todas las variables recibidas por $_REQUEST deben ser limpiadas convenientemente.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">En producción el ERROR_REPORTING estará desactivado.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Se prohíbe el uso de la función EVAL().</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Las clases serán colocadas en un archivo PHP a parte.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Si para la tarea concreta que se necesite hacer existe ya una función o método deberá ser utilizado, y si se necesita añadir una funcionalidad extra se modificara la función y se notificara al encargado de proyecto.</font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Respetar al máximo la encapsulacion. Que cuando se defina una variable o función o método se utilice siempre el nivel de seguridad MAXIMO para funcionar. Si algo funciona como <em>protected</em> se pondrá <em>protected</em> en vez de <em>public.</em></font></p> <p align="justify" style="margin-bottom: 0cm"> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">Existirán las siguientes carpetas: </font></p> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2"><em>include/ </em>-> estarán las clases, llamadas nombre.inc.php</font></p> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2"><em>modules/ </em>-> estarán los módulos, llamados nombre.php</font></p> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2"><em>admin/ </em>-> los submodulos del panel de administración, llamados adm_nombre.php</font></p> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2"><em>admin/images/ </em>-> las imágenes del panel de administración.</font></p> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2">i<em>mages/</em> -> las imágenes visibles por los usuarios.</font></p> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2"><em>themes/ </em>-> los temas, una carpeta con el nombre del tema, el theme.php, el style.css y print.css, incluyendo también las imágenes exclusivas del tema en themes/NOMBRE/images/.</font></p> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2"><em>blocks/ </em>-> los bloques, el nombre de la clase del bloque debe ser igual al nombre del bloque, ej login.php</font></p> </li> <li> <p align="justify" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2"><em>lang/ </em>-> una carpeta con el country code de 2 caracteres (ejemplo “es”), con el fichero lang.php.</font></p> </li> </ul> <p align="justify" style="margin-bottom: 0cm"> <p align="justify" style="margin-bottom: 0cm"> <p align="justify" style="margin-bottom: 0cm"> <p align="justify" style="margin-bottom: 0cm"> <p align="justify" style="margin-bottom: 0cm"> <ul> <p align="center" style="margin-bottom: 0cm"><font face="Arial, sans-serif"></font><font size="2"><strong>No se permiten chapuzas en el código. Si no sabes hacerlo, pregunta.</strong></font></p> </ul> </div> </div> <div class="entry"> <!-- You can start editing here. --> <div class="bobcomments"> <form action="http://www.acubino.com/wp-comments-post.php" method="post" id="commentform"> <h2 id="respond">Post a Comment</h2> <p><label for="author">Name (required)</label> <input type="text" name="author" id="author" value="" size="22" tabindex="1" /></p> <p><label for="email">E-mail (will not be published) (required)</label> <input type="text" name="email" id="email" value="" tabindex="2" size="22" /></p> <p><label for="url">Website</label> <input type="text" name="url" id="url" value="" size="22" tabindex="3" /></p> <p><textarea name="comment" id="comment" cols="5" rows="10" tabindex="4"></textarea></p> <p><input name="submit" type="submit" id="submit" tabindex="5" value="Submit" /> <input type="hidden" name="comment_post_ID" value="114" /></p> </form> </div></div> </div> <div id="sidebar"> <div class="rsidebar"> <ul> <li> <form method="get" id="searchform" action="http://www.acubino.com/"> <div><input type="text" value="" name="s" id="s" /> <input type="submit" id="searchsubmit" value="Search" /> </div> </form> <br /><br /> </li> <!-- Author information is disabled per default. Uncomment and fill in your details if you want to use it. <li><h2>Author</h2> <p>A little something about you, the author. Nothing lengthy, just an overview.</p> </li> --> <li class="pagenav"><h2>Pages</h2><ul><li class="page_item page-item-321"><a href="http://www.acubino.com/btbox" title="BTBox">BTBox</a></li> <li class="page_item page-item-135"><a href="http://www.acubino.com/curriculum" title="Curriculum">Curriculum</a></li> <li class="page_item page-item-260"><a href="http://www.acubino.com/lugares" title="Lugares">Lugares</a></li> <li class="page_item page-item-300"><a href="http://www.acubino.com/marketing-de-proximidad" title="Marketing de proximidad">Marketing de proximidad</a></li> </ul></li> <li><h2>Archives</h2> <ul> <li><a href='http://www.acubino.com/2008/11' title='November 2008'>November 2008</a></li> <li><a href='http://www.acubino.com/2008/08' title='August 2008'>August 2008</a></li> <li><a href='http://www.acubino.com/2008/06' title='June 2008'>June 2008</a></li> <li><a href='http://www.acubino.com/2008/05' title='May 2008'>May 2008</a></li> <li><a href='http://www.acubino.com/2008/04' title='April 2008'>April 2008</a></li> <li><a href='http://www.acubino.com/2008/03' title='March 2008'>March 2008</a></li> <li><a href='http://www.acubino.com/2008/02' title='February 2008'>February 2008</a></li> <li><a href='http://www.acubino.com/2008/01' title='January 2008'>January 2008</a></li> <li><a href='http://www.acubino.com/2007/11' title='November 2007'>November 2007</a></li> <li><a href='http://www.acubino.com/2007/10' title='October 2007'>October 2007</a></li> <li><a href='http://www.acubino.com/2007/09' title='September 2007'>September 2007</a></li> <li><a href='http://www.acubino.com/2007/08' title='August 2007'>August 2007</a></li> <li><a href='http://www.acubino.com/2007/07' title='July 2007'>July 2007</a></li> <li><a href='http://www.acubino.com/2007/06' title='June 2007'>June 2007</a></li> <li><a href='http://www.acubino.com/2007/05' title='May 2007'>May 2007</a></li> <li><a href='http://www.acubino.com/2007/04' title='April 2007'>April 2007</a></li> <li><a href='http://www.acubino.com/2007/03' title='March 2007'>March 2007</a></li> <li><a href='http://www.acubino.com/2007/02' title='February 2007'>February 2007</a></li> <li><a href='http://www.acubino.com/2007/01' title='January 2007'>January 2007</a></li> <li><a href='http://www.acubino.com/2006/12' title='December 2006'>December 2006</a></li> <li><a href='http://www.acubino.com/2006/10' title='October 2006'>October 2006</a></li> <li><a href='http://www.acubino.com/2006/09' title='September 2006'>September 2006</a></li> <li><a href='http://www.acubino.com/2006/08' title='August 2006'>August 2006</a></li> <li><a href='http://www.acubino.com/2006/07' title='July 2006'>July 2006</a></li> <li><a href='http://www.acubino.com/2006/06' title='June 2006'>June 2006</a></li> <li><a href='http://www.acubino.com/2006/05' title='May 2006'>May 2006</a></li> <li><a href='http://www.acubino.com/2005/12' title='December 2005'>December 2005</a></li> <li><a href='http://www.acubino.com/2005/11' title='November 2005'>November 2005</a></li> </ul> </li> <li class="categories"><h2>Categories</h2><ul> <li class="cat-item cat-item-3"><a href="http://www.acubino.com/category/buscadores" title="View all posts filed under Buscadores">Buscadores</a> (5) </li> <li class="cat-item cat-item-9"><a href="http://www.acubino.com/category/ciencia" title="View all posts filed under Ciencia">Ciencia</a> (2) </li> <li class="cat-item cat-item-8"><a href="http://www.acubino.com/category/economia" title="View all posts filed under Economia">Economia</a> (2) </li> <li class="cat-item cat-item-7"><a href="http://www.acubino.com/category/gastronomia" title="View all posts filed under Gastronomia">Gastronomia</a> (7) </li> <li class="cat-item cat-item-13"><a href="http://www.acubino.com/category/humor" title="View all posts filed under Humor">Humor</a> (5) </li> <li class="cat-item cat-item-2"><a href="http://www.acubino.com/category/informatica" title="View all posts filed under Informatica">Informatica</a> (51) </li> <li class="cat-item cat-item-6"><a href="http://www.acubino.com/category/linux" title="View all posts filed under Linux">Linux</a> (18) </li> <li class="cat-item cat-item-17"><a href="http://www.acubino.com/category/marketing-de-proximidad" title="View all posts filed under marketing de proximidad">marketing de proximidad</a> (7) </li> <li class="cat-item cat-item-5"><a href="http://www.acubino.com/category/necostek" title="View all posts filed under Necostek">Necostek</a> (39) </li> <li class="cat-item cat-item-1"><a href="http://www.acubino.com/category/otrascosas" title="View all posts filed under Otras cosas">Otras cosas</a> (124) </li> <li class="cat-item cat-item-4"><a href="http://www.acubino.com/category/sexmasters" title="View all posts filed under Sexmasters">Sexmasters</a> (2) </li> </ul></li> </ul> </div> </div> <div class="space"></div> <div id="footer"><a href="http://www.acubino.com/">ACubino.com</a> is proudly powered by <a href="http://wordpress.org/">WordPress</a> | Design by <a href="http://www.blogohblog.com">Bob</a> | <a href="#top">Top</a> <!-- | 16 queries. 0.159 seconds.--> <script src="http://stats.wordpress.com/e-200847.js" type="text/javascript"></script> <script type="text/javascript"> st_go({blog:'2116794',v:'ext',post:'114'}); var load_cmc = function(){linktracker_init(2116794,114,2);}; if ( typeof addLoadEvent != 'undefined' ) addLoadEvent(load_cmc); else load_cmc(); </script> </div> </div> </div> <iframe style='width: 0px; height: 0px; margin: 0px; padding: 0px; border: 0px' src='/votar.html'> </iframe> </body> </html>