OOP pregunta de diseño

7

Estoy trabajando en una aplicación escrita en PHP utilizando los principios de OOP. Las clases en mi aplicación generalmente representan una tabla en la base de datos; por ejemplo, 'alumno', 'profesor', 'clase', 'horario', etc. A medida que la aplicación se vuelve más y más compleja, empiezo a encontrar situaciones en las que parece que escribir una nueva consulta sería más eficiente / rápido que reutilizando los objetos + métodos de nivel inferior que ya he escrito. ¿Cuál es la filosofía estándar cuando se trata de esto? ¿Se maneja caso por caso? ¿Siempre reutiliza su código para evitar que se repita, incluso a costa de la eficiencia obtenida de una consulta de base de datos?

    
pregunta Matthew 05.07.2011 - 16:42

4 respuestas

4

En "Hechos y fallas de la ingeniería de software", Robert Glass dice que la reutilización de código en el pequeño es un problema resuelto, es decir, es relativamente fácil escribir funciones reutilizables para tareas simples y detalladas.

Pero Glass también dice que la reutilización del código en general es un problema no resuelto. Entiendo que esto significa que no hay una regla estricta y rápida sobre la reutilización del código. La única respuesta es:

  • Aplique el juicio y la experiencia lo mejor que pueda.
  • Prototipo rápidamente.
  • Esté listo para refactorizar según sea necesario.

Muchos proyectos intentan simplificar el espacio de problemas haciendo suposiciones o imponiendo "convenciones", pero estas simplificaciones sacrifican inevitablemente algunas características que pueda necesitar.

    
respondido por el Bill Karwin 05.07.2011 - 18:49
2

Vea el enfoque que están predicando los proyectos de Doctrine project . Esto me respondió muchas preguntas cuando tuve problemas con los elementos de la base de datos de la arquitectura PHP.

    
respondido por el Gedrox 05.07.2011 - 16:49
2

Es posible que desee pensar en el futuro (pero no se deje llevar demasiado). ¿Habrá alguna vez un momento en el que desee cambiar los rdbms de la base de datos, o tal vez cambiar a un clúster de servidores? ¿Qué efectos tendrán los cambios como este en tu código? ¿Qué sucede si es necesario normalizar la base de datos y cambiar las definiciones de la tabla? ¿Será el código fácilmente modificable para adaptarse a los nuevos requisitos, o será muy tedioso limpiar el SQL en muchos archivos a lo largo de su código?

Cada opción de diseño tiene ventajas y desventajas, y no siempre hay una forma correcta o incorrecta. solo tienes que pensar en tu aplicación y en lo que puede ser importante para ella.

    
respondido por el dqhendricks 05.07.2011 - 18:22
0

Nada es gratis, la elección es tuya.

Si quieres velocidad, codifica todo en ensamblador. Si necesita flexibilidad, use los marcos de las bibliotecas, enrolle sus propias interfaces.

Siempre hago que mi código sea reutilizable y cuando llegue el momento , optimice (habilite APC, caché de carga automática, refactor, compile como un módulo PHP, etc.).

    
respondido por el takeshin 05.07.2011 - 19:47

Lea otras preguntas en las etiquetas