2011-06-25 14 views
13

Estoy trabajando con/en un sitio extremadamente anticuado que no pondría mi nombre. Parece que hay un patrón re-ocurriendo en el código existente, a lo largo de las líneas de:Código después de una declaración de devolución en una función de PHP

function foo() { 
    $a = 'a'; 
    $b = 'b'; 

    return; 

    $c = 'c'; 
    $d = 'd'; 
} 

Estoy muy relunctant para borrar el código existente de una función que no he escrito, y todo funciona como es . Pero me gustaría saber por qué?

Todo lo que he aprendido (con la excepción de una llamada de línea Goto) me dice que el código que sigue a la declaración de devolución es inútil. ¿Lo es? ¿Por qué el programador anterior haría esto?

+2

Sí lo es. Tal vez estaba probando algo. –

+0

Aprecio la necesidad de averiguar POR QUÉ el desarrollador anterior hizo algo desconcertante e idiota. Con demasiada frecuencia nos encontramos simplemente encogiéndonos de hombros y avanzando ... hasta que nos muerde semanas más tarde, una vez que hemos olvidado lo que hicimos. –

+0

Saludos - Lo sé, ¿verdad? La cantidad de veces que me había topado la cara durante ese proyecto fue una locura – Chris

Respuesta

17

ese código después de la declaración return nunca se ejecutará. lo más probable es que el desarrollador original quisiera probar rápidamente otros valores para las variables y dejó sus antiguos experimentos en la función. use el control de versiones y puede borrar el código existente y recuperarlo en caso de que alguna vez lo necesite

+0

Gracias por la confirmación: la prueba fue probablemente el razonamiento detrás de esto. El control de versiones es un buen punto, y probablemente sea algo que necesito empezar a ver, simplemente no me he encontrado con un servicio privado asequible – Chris

+0

@chris: ¿servicio privado asequible? use un dvcs (por ejemplo, [git] (http://git-scm.com) o [mercurial] (http://mercurial.selenic.com/)), ambos son software de fuente abierta. también le permiten tener el historial de versiones localmente sin necesidad de un servidor – knittl

+0

Estaba pensando que necesitaba pasar por github, googlecode o similar – Chris

3

El código debajo de la declaración de devolución es inútil, no se ejecutará.

1

Lo primero que pensé fue que la persona que escribió el código originalmente agregó la devolución porque el código ya no necesitaba ejecutarse, pero no quería borrar el otro código por alguna razón.

Un ejemplo de dónde podría ser este caso es en una situación en la que el autor reescribió el código para implementarlo de otra manera. Pusieron la nueva implementación sobre la declaración de devolución, pero dejaron el código debajo de ella para que estuviera allí como una "referencia" de cómo solía hacerse. De esta forma, si se dan cuenta de que algo no funciona en el nuevo código, tienen el código antiguo para ver fácilmente.

Es cierto que el control de versiones y las pruebas unitarias lo hacen mucho menos útil, pero no es algo fuera de lo común.

Cuestiones relacionadas