2008-10-06 19 views
6

Actualmente estoy compilando una pequeña aplicación web que incluye una buena cantidad de JavaScript. Cuando estaba creando un prototipo de la idea inicial, simplemente pirateé algunas funciones para demostrar cómo se comportaría finalmente la aplicación con la intención de avanzar reescribiendo JavaScript en una naturaleza orientada a objetos.¿Vale la pena convertir mi código JavaScript funcional a un diseño orientado a objetos?

Ahora que estoy entrando en la fase de implementación, estoy descubriendo que crear JavaScript orientado a objetos por el hecho de estar orientado a objetos parece excesivo; es probable que el proyecto no requiera modificaciones importantes en el futuro eso garantizaría y el diseño orientado a objetos. En cambio, descubro que un conjunto de funciones concisas y cohesivas funcionan bien.

Entonces, con el intento de seguir el principio KISS, cuando un conjunto de funciones proporciona una solución adecuada a un problema, ¿hay otras razones que valga la pena considerar para convertir mi código en un diseño orientado a objetos ?

Respuesta

11

No, aunque personalmente encuentro que OOP es más sabroso, es un medio para un fin, y no un fin en sí mismo. Hay muchos casos en que la programación de procedimientos tiene más sentido que OOP, una conversión por el bien de la conversión, podría ser, como usted dijo, excesivo.

10

No, déjelo y avance, eso es más productivo desde mi punto de vista.

+0

Eso fue un poco un descarado retoque de edición, ¿no? Por favor, absténgase de esto, solo aumenta artificialmente el ruido en la página principal. – annakata

5

Si su código está bien estructurado, bien diseñado y bien comentado, y hace el trabajo que se requiere de él, luego jugar con él por cualquier otro motivo que no sea agregar características es desacertado.

Si bien podría ser agradable decir que el programa está muy bien OOP, etc., si no necesita ser cambiado para que funcione, definitivamente lo dejaría como está.

Si no está roto, no haga Fidgit con él :)

0

tratarlo como código heredado de ahora en adelante. Cuando desee cambiar algo, refactorícelo para que el código sea más fácil para la mente. Si necesita un poco de OOP, úselo. Si no lo haces, no lo hagas.

OOP es un martillo, por favor no trate un problema de tornillo como un clavo.

0

Si funciona, y es fácil de mantener, no me molestaría en convertirlo para convertirlo. Debe haber cosas más interesantes que hacer.

2

Si este código ya está implementado y no requerirá mantenimiento o, mejor aún, actualizaciones, quédese con él. Si va a implementarlo ahora y podría ser complejo, considere el enfoque OO.

La experiencia me ha demostrado que es bastante fácil escribir y mantener código de procedimiento mientras la complejidad es baja, pero después de cierto umbral comienza a ser exponencialmente más difícil aumentar la complejidad mientras se usa programación de procedimientos, mientras que OOP, aunque más difícil de comenzar, mantiene la complejidad mucho más manejable.

En pocas palabras: si la tarea es lo suficientemente simple o ya se ha implementado, manténgala simple. Si puede ser más complejo, considere OOP.

0

Solo en mente Los objetos son bastante caros de crear en javascript.

Mantenga la construcción de objetos al mínimo.

1

Yo diría que todavía vale la pena revisar su código antes de tomar una decisión. La desventaja obvia del código de "reescritura" es que hay un costo de prueba para garantizar que su código funcione igual que antes. ¿Tienes alguna prueba de Unidad? De lo contrario, su costo de prueba es aún mayor. Así que, en general, estoy en contra de volver a escribir el código de trabajo a menos que sirva para otro fin, que es permitirle escribir más fácilmente la nueva funcionalidad que ahora se requiere (es decir, refactorizar funciones comunes, etc.)

SIN EMBARGO, cualquier Cuando una persona dice "pirateé", sugiero que siempre vale la pena echar un vistazo a tu código. ¿Por qué fue pirateado en primer lugar? Sé que mucha gente dice que el código orientado a objetos no es un fin en sí mismo, pero es una metodología que después de un tiempo tampoco tiene que ser pensada. De alguna manera, naturalmente, empiezas a hacerlo.

Tal vez su js es relativamente simple, y por lo tanto OO scafolding es realmente extra sobrecarga. Multa. Pero sigo sugiriendo que siempre debe codificar la revisión (y especialmente que alguien más revise) cualquier código que llame "pirateado". Tal vez fue un desliz freudiano ... pero se deslizó.

+0

@Nick, Sin resbalón freudiano: el código fue 'pirateado' para la creación de prototipos y la demostración de una posible funcionalidad. Nunca lanzaría código pirateado en un entorno de producción =). Profesionalmente, escribo código OO todo el día, por lo que _no_ la codificación en OO se siente casi antinatural, es por eso que quería comentarios. – Tom