Micaela 12 de agosto de 2009 a las 09.03
   Imprimir artículo
elWebmaster.com

10 tips para reconocer PHP basura en el código de un software


phpelefante11Sea o no sea de tu agrado, como un desarrollador profesional, tarde o temprano tendr√°s que realizar alg√ļn tipo de personalizaci√≥n sobre un software existente.

Si no est√°s familiarizado con el software, es bueno mirarlo un poco antes de aceptar el trabajo. En esta nota, te traemos 10 consejos para identificar r√°pidamente software PHP basura.

1. El software trata de reinventar el objeto modelo, o fijar las propiedades de lenguaje

F√≠jate si puedes encontrar una clase llamada “Object”. Si la encuentras, es una indicaci√≥n bastante clara de que el autor se encuentra intentando reinventar el objeto modelo (com√ļnmente esto se da por su falta de conocimiento). Por lo que es seguro asumir que sus “arreglos” no parar√°n ah√≠. As√≠ que… ¬°Desconecta el tel√©fono y oc√ļltate bajo tu escritorio!

2. El código incluye variables globales definidas por el usuario

Una b√ļsqueda en el c√≥digo por “global” o “$GLOBALS” podr√≠a revelar algo como esto:

global $database, $my, $mainframe;

La infame variable global. Si puedes decirme con seguridad lo que significan estas dos variables… o est√°s muy relacionado con el software del cual las obtuve, o eres ps√≠quico. De hecho, te damos bonus extra si puedes decir qu√© parte del c√≥digo puso sus garras en ellas hasta que el flujo de ejecuci√≥n lleg√≥ a este punto. En definitiva… ¬°Evitalas como plaga!

3. HTML y SQL disperso

Busca algunos strings SQL y HTML comunes. Deberías poder determinar de forma rápida si el HTML y el SQL se encuentran en los lugares apropiados. Si encuentras HTML y SQL en el mismo archivo, se trata definitivamente de basura.

4. Las Clases hacen demasiado

Encuentra los 3 archivos de clases m√°s pesados (por ejemplo, orden√°ndolos por Tama√Īo). Observa el nombre de la clase. ¬ŅIndica una responsabilidad distinta? Mira los m√©todos. ¬ŅLas tareas que desempe√Īan se encuentran relacionadas? Si no lo est√°n, ¬°Sal de ah√≠! ¬°Huye!

5. Muchas propiedades son p√ļblicas o muchas propiedades son est√°ticas

Si una gran cantidad de propiedades son declaradas como “public static”, triplica tu cotizaci√≥n. Si tengo que explicarte por qu√©, quiz√° haya una vacante en el equipo de desarrollo de ese software para ti.

6. M√ļltiples niveles de herencia

M√°s de dos niveles de herencia deber√≠an ser evitados completamente. En serio, si alg√ļn d√≠a logras encontrar un uso apropiado de dos niveles de herencia, te invitaremos una cerveza (o un refresco de soda, en todo caso).

7. Los autores intentan usar patrones de dise√Īo

Si los autores tienen una pista de lo que est√°n haciendo o no, es f√°cil de determinar buscando en el c√≥digo algunos de lo m√°s comunes patrones de dise√Īo. Busca en el c√≥digo base y/o en la documentaci√≥n, palabras como “f√°brica”, “decorador”, “estrategia” etc. Si las encuentras, podr√°s determinar de forma r√°pida si los autores saben lo que est√°n haciendo o s√≥lo intentan parecer interesantes. Si no los encuentras… ¬°Rechaza este proyecto!

8. El software se mete con el nivel de error

Las aplicaciones bien escritas funcionan bien a cualquier nivel de error. Buscando en los archivos /error_level\(.*\)/ debería bastar. En caso de que encuentres uno, trata reemplazar el valor por E_STRICT. Créeme, Se trata de algo más que una formalidad.

9. En el c√≥digo base, hay un directorio llamado”core”

Esto es usualmente utilizado como una excusa para hacer que toda la aplicaci√≥n dependa de lo que sea que hay ah√≠ adentro. M√°s all√° de lo atrayente que resulte el t√©rmino (hace que el contenido suene bastante cool e importante), definir un “core” es una se√Īal de mal dise√Īo.

10. El software utiliza su propio lenguaje de template

Ten miedo. Mucho miedo. Estos dise√Īadores est√°n tratando de reinventar la rueda. Ignora esta advertencia, y un d√≠a te encontrar√°s pasando toda una tarde tratando de escapar de un loop en un “for”.

Fuente: PHP Freaks


Enviar a Del.icio.us Enviar a Meneame Enviar a Digg Enviar a Fresqui Enviar a Enchilame

Comentarios (8)

  1. Christian dice:

    Respecto al #2: No estoy de acuerdo, las variables globales hay que saber usarlas, no prescindir de ellas, te planteo como solucionarlas un caso similar a este (si no utilizas la sentencia global):

    <?php
    $fin_bucle = 200;
    function loopear(){
    // global $fin_bucle; // esta comentada para prescindir del llamado a la variable global
    for ( $i=0 ; $i<$fin_bucle ; $i++){
    echo “Estamos en la iteracion: ” . $i . ““;
    } // end for
    }
    loopear();
    ?>

    Lo que si considero que se puede descartar es el array asociativo $GLOBALS

  2. Victor dice:

    Hay un par de puntos que encuentro est√ļpidos, que tiene que ver como se llame una clase, o un directorio (¬Ņ?). Hay muchos puntos en lo que concuerdo, pero otros como decia, los encuentro est√ļpidos.

    CakePHP tiene una clase llama Object y la herencia va mas all√° de dos niveles (object -> controller -> app_controller -> posts_controller), ademas su directorio se llama ‘cake’ pero dentro del sistema se llama como ‘Core’ y no por eso es un mal framework, al contrario, es uno de los mejores que existen actualmente en el mercado.

    Saludos,

  3. Victor dice:

    @Christian por que no mejor asi?
    <?php
    function loopear($fin_bucle = 200){
    for ( $i=0 ; $i

    Saludos

  4. Ironic dice:

    Gracias a que no muchos `reinventan la rueda` todos tienen sus blogs en wordpress…

    Qu√© clase de desarrollador no incita a reinventar la rueda, es de lo m√°s sano :-) …ya s√© que tipo de `desarrollador`….uno que tiene su p√°gina en wordpress usando un theme que ni siquiera dise√Īo.

    Por cierto, el punto 9 es un asco, se requiere un `Core`, con funciones/clases comunes que se requieren para manipular casos en com√ļn, qu√© caso tiene tener c√≥digo repetido o decenas de m√≥dulos en archivos separados, si esa es tu `idea` deber√≠as testear lo que tarda PHP en hacer includes basados en directorios…. aka: include(‘lib/db.inc’); include(‘themes/basic/front.php’); …etc., require_once()? es m√°s lento que el include() :-S

  5. Rolf dice:

    hay puntos muy jalados de pelos… discrepo mucho con esta lista la verdad

  6. Crafter dice:

    No Estoy Totalmente de Acuerdo con el Ultimo Tip, porque ? pues sencillo yo estoy trabajando mi propio script de PHP, que si WP es Mejor o Drupal o X, pues no me importa, porque de esta manera he aprendido cosas que ni me imagine… Pienso que hacer algo propio de una manera limpia es lo mas emocionante que he podido hacer en mi vida como programador, la satisfacci√≥n que te da cuando ves a tu script dar sus primeros pasos es casi igual a cuando tu hijo empieza a caminar… as√≠ que no esta mal que la gente experimente, ahora lo que es muy importante es que si lo va a hacer busque mil y una forma para que el C√≥digo que esta haciendo sea limpio y coherente, que para eso tenemos mucha gente y paginas parecidas a el Webmaster que te da tips estupendos para programar tus aplicaciones en PHP de una manera excelente… :)

  7. harold cruz dice:

    hay que probarlo, si no resulta se modifica

  8. iLen dice:

    La verdad que si hay puntos que dan asco.. pero otros si son buenos

Deja tu opinión

© 2007 - 2008 elWebmaster.com | Powered by Wordpress | Diseño CSS y XHTML válido. | Algunos íconos basados en FamFamFam Mini
Acceder