2010-02-01 18 views
6

¿Hay algún consejo sobre cómo empezar a corregir un script php a la antigua usanza?Cómo reparar un viejo estilo de codificación script php

Hace unos días recibí una oferta para desarrollar un viejo proyecto PHP, y por anticuado me refiero a que la estructura no usaba el método de codificación OOP y no tiene un marco definido.

No estoy seguro de por dónde empezar, y quería saber qué métodos hay para desarrollar un script antiguo.

Nota: No quieren gastar mucho dinero en comenzar un nuevo proyecto.

Entonces, ¿qué métodos sugerirías para actualizar un viejo script php?

+2

No creo que no-OOP y no-framework sea en sí mismo un defecto. Puede escribir aplicaciones PHP perfectamente buenas sin ninguna de esas opciones, y si la aplicación está funcionando y es razonablemente mantenible, no tener OOP o framework no es una buena razón para comenzar a alterar el código. Prácticas de seguridad malas (por ejemplo, inyecciones sistémicas SQL y HTML) y mantenimiento deficiente (muchas aplicaciones PHP adolecen de falta de comentarios, mala combinación de lógica de acción con presentación, sin estructura, sangría o forma consistente de hacer las cosas) - esas son buenas razones para actualizar/reescribir – bobince

+0

Estoy codificando algo ahora mismo en PHP y no uso un framework o OOP. Creo que los frameworks son solo un bagaje extra en una pequeña aplicación y nunca me ha importado cómo se manejaba OOP en PHP. Pero tampoco soy una de esas personas que piensan que "una aplicación no está estructurada correctamente si no hay al menos 5 grados de herencia donde va el código real que hace el trabajo" – Earlz

Respuesta

2

Depende de lo que quiera decir con "viejo". ¿Viejo como escrito para PHP 4? ¿O viejo como en no OOP? (O ambas cosas?)

Antiguo como en PHP4:
Mientras que tamizar a través de él y, o bien suprimir advertencias o realmente solucionar función obsoleta llama todo debería estar bien. Esto es simplemente un trabajo aburrido. Fácil y barato.

Viejo como en la no-OOP:
Una teoría podría desarrollar una aplicación muy estable y escalable sin OOP o un MVC definido (u otro) marco. De hecho, si la aplicación es pequeña en escala, no hay razón para agregar la complejidad de espaguetis y albóndigas de OOP o un marco. Volver a escribir todo en OOP con algún marco es difícil y costoso. Y muy probablemente exagerado.

+1

Dice no-OOP en la pregunta . –

1

Puede darnos más detalles, quizás un ejemplo.

Incluso el código de procedimiento tiene elementos de OOP. Puede identificar variables y procedimientos que se relacionan con la misma entidad. Podrías ir reescribiéndolo, pero van a tener dificultades para encontrar valor en él, especialmente si son frugal, como sugeriste.

0

tal vez su código ahora se ve así alt text

y que desea que se vea así

alt text

Bueno si es sólo un guión y no todo el proyecto en el que se convierten al estándar de codificación OOP.

+0

¿PHP incluso tiene una palabra clave 'goto'? – Earlz

3

Joel Spolsky writes:

"[Netscape hizo] el peor error estratégico que cualquier compañía de software puede hacer: Se decidió volver a escribir el código desde cero."

Por lo tanto, cualquiera sea su curso de acción, la prioridad es trabajar con el código existente. La refactorización será uno de los mejores métodos que puede usar.

¿Qué no puedes hacer, si la base de código no está actualizada, que es absolutamente necesario? ¿Cuánto y de qué en particular necesita actualizar para que esa acción sea posible? Considera estas dos preguntas.

1

Cuando hago esto, es un proceso de varios pasos.Por lo general, hay un producto existente para seguir funcionando. Reescribir desde cero rara vez es una opción, aunque termine haciéndolo eventualmente.

  • Begin zanja manual incluyen declaraciones e implementar un cargador automático, siempre que sea posible (toma muchos pases)
  • Crear un script de ayuda para simular comillas mágicas & globales de registro. Esto es para que pueda desactivarlo en PHP, mientras mantiene el código existente en ejecución
  • Elimine gradualmente las excesivas barras-barras o agregue barras inclinadas, si corresponde. El script de ayuda le permite hacer esto por archivo.
  • Asegurar que las variables tienen alcance adecuado
  • separar el código de presentación. Considere Smarty o plantilla alternativa sistema
  • Mover el PP llama a la DOP y el uso de sustitución de parámetros para todo
  • mirar el código y pensar apagando un controlador frontal

luego miro el proyecto y determinar cómo voy a alterar la lógica en sí misma A menudo, si no hay ninguna función, mi primer paso es incluir conductas comunes en métodos estáticos. Obtenga tanta reutilización sin demasiado esfuerzo, así que no estoy preocupado con la organización todavía.

Después de que la redundancia se reduce, entonces llego a la organización. Es en esta fase que empiezo a planificar mis modelos de clase y a refactorizar las funciones en métodos limpios. Este es también el momento de las pruebas automatizadas (phpunit). Una vez que estoy razonablemente seguro, agrego algunos controladores e integro las plantillas, y luego termino ... salvo uno o dos pases más.

Para mí, se trata de identificar dónde estoy, dónde quiero estar y hacer un plan que se puede ejecutar en varios pasos pequeños. Todos tienen sus propios objetivos, así que no hay un plan mágico a seguir, excepto el tuyo.

+0

me gusta esta respuesta, es algo así: D cuéntame más sobre PDO – Ghazanfari

+0

PDO es una biblioteca de base de datos OOP para PHP. Ofrece iteradores, declaraciones preparadas y una interfaz coherente. http://php.net/PDO – pestilence669

0

Lea su código. Háblales.

Mire el cambio solicitado en términos del código existente. Háblales.

Decide qué tan poco cambias para hacer lo que quieras. Háblales.

Hacer eso. Háblales.

Cuando solicitan una funcionalidad que se puede hacer más fácilmente reescribiendo que modificando, hágalo.

Trabaja con un IDE que puede ayudar con la refactorización.

+0

Así que sugiriendo que hable con esos estúpidos hombres de negocios, mi objetivo principal es asegurar este proyecto y desarrollarlo de manera que pueda estabilizar el proyecto – Ghazanfari

+0

No se puede hacer eso sin su apoyo. Y mencionó algo sobre "Nota: No quieren gastar mucho dinero en comenzar un nuevo proyecto". Este tipo de actividad huele a la gestión de proyectos y no a la programación. Por cierto: ¡no pueden ser "empresarios estúpidos" si tienen dinero para gastar en programación y saben lo suficiente como para no gastar demasiado! Tenga cuidado de ser visto como un "programador estúpido" que no puede hacer un cambio simple. – Don

Cuestiones relacionadas