2010-02-25 9 views
5

Estoy tratando de conseguir un par de miembros del equipo con la mentalidad de OOP, que actualmente piensan en términos de programación de procedimientos.¿Cuál es el mejor argumento Pro OOP?

Sin embargo, me está costando poner en términos el "por qué" todo esto es bueno, y "por qué" deberían querer beneficiarse de ello.

Utilizan un lenguaje diferente del que yo uso, y carezco de las habilidades de comunicación para explicarles esto de una manera que les hace "querer" aprender la forma de hacer OOP de las cosas.

¿Cuáles son algunos buenos libros, artículos o argumentos independientes del lenguaje que cualquiera puede dar o señalar?

+10

Pensé que esta discusión era real hace unos 15 años. – Roman

+4

@Roman: Lo pondría hace 25 años cuando salió C++. –

+2

¿Qué idioma están usando estos tipos, TurboBasic? Es 2010, y OOP está bastante bien establecido en este punto. – MusiGenesis

Respuesta

5

OOP es bueno para un equipo de desarrolladores múltiples porque permite fácilmente la abstracción, el encapsulado, la herencia y el polimorfismo. Estas son las grandes palabras de moda de OOP y son las grandes palabras de moda por buenas razones.

Abstracción: permite que otros miembros de su equipo usen el código que usted escribe sin tener que entender los detalles de la implementación. Esto reduce la cantidad de comunicación necesaria. Piense en El mes del hombre mítico en el que se detalla que la comunicación es uno de los costos más altos que enfrenta un equipo de desarrollo.

Encapsulación: le permite cambiar los detalles de implementación sin afectar a los usuarios de su código. Como tal, reduce los costos de mantenimiento del código.

Herencia: Permite a su equipo reutilizar y ampliar sus implementaciones con costos reducidos.

Polimorfismo: permite a su equipo usar diferentes implementaciones de una abstracción dada. Si su equipo está escribiendo código para leer y analizar datos de Stream, debido al polimorfismo, ahora puede trabajar con FileStream s, MemoryStream sy PigeonStream de manera transparente y con costos significativamente reducidos.

OOP no es un santo grial. No es apropiado para algunos equipos porque los costos de usarlo podrían ser más altos que los costos de no usarlo. Por ejemplo, si intenta diseñar un polimorfismo pero nunca tiene implementaciones múltiples de una abstracción dada, probablemente haya aumentado sus costos.

+0

+1 este es el tipo de respuestas que estaba buscando –

+1

Buena respuesta. Un comentario: la abstracción y la encapsulación funcionan juntas, el objetivo es la separación de la interfaz y la implementación. Una extensión formaliza la interfaz con el diseño por contrato. –

1

Abstraction ayuda a administrar la complejidad de una aplicación: solo se expone la información que se requiere.

Hay muchas maneras de hacer esto: OOP no es la única disciplina para promover esta estrategia.

Por supuesto, no es porque uno pretende hacer programación orientada a objetos que se construye una aplicación sin abundantes "filtraciones abstracción" frustrando con ello la estrategia ...

2

Comparando procesal de programación orientada a objetos, el mayor ganador, con mucho, es encapsulación OOP no significa que obtendrá la encapsulación automáticamente, pero el proceso de hacerlo es gratis en comparación con el código de procedimiento.

+3

+1 La encapsulación es la Cenicienta de OOP: bonita, pero a menudo ignorada. Yo seguiría adelante y llamaría heredad a la malvada madrastra. – MusiGenesis

+0

@MusiGenesis, sí, ¿y el polimorfismo y la herencia múltiple? – Earlz

+0

@Earlz: hermanastras malvadas, por supuesto (aunque no estoy seguro de que fueran formalmente "perversas" como su madre). – MusiGenesis

0

OOP no tenía sentido para mí hasta que estuve trabajando en una aplicación que se conectaba a dos bases de datos diferentes. Necesitaba una función llamada getEmployeeName() para ambas bases de datos. Decidí crear dos objetos, uno para cada base de datos, para encapsular las funciones que se ejecutaban contra cada uno (no había funciones que se ejecutaran simultáneamente). No es el epítome de OOP, sino un buen comienzo para mí.

La mayor parte de mi código sigue siendo de procedimiento, pero soy más consciente de las situaciones donde los objetos tendrían sentido en mi código. No soy de la mentalidad de que todo debe ser de una manera u otra.

1

La frase clave: Con OOP puede modelar el mundo "tal como es" * tos *.

+0

Esa es la razón por la que uso. El mundo funciona así. El mundo no es una serie de tubos –

+0

Siempre he argumentado que el mundo es de procedimiento. Solo puedo hacer una cosa a la vez. – Scott

+0

Es difícil decir cómo es el mundo. Si ni siquiera puedes definir cómo es el mundo, ¿cómo puedes decir que puedes modelarlo? –

0

Reutilización de código existente a través de jerarquías.

1

Tengo un pensamiento extraño. No sé, pero probablemente existan algunas áreas donde OOP es innecesaria o incluso mala (muy, muy, muy humilde: programación de JavaScript).

Usted y su equipo probablemente trabajen en una de estas áreas. En otro caso, fallaste hace muchos años debido a que los equipos que usan oop y todos sus beneficios (como diferentes marcos, UML, etc.) simplemente harían su trabajo de manera más eficiente.

Quiero decir que si todavía funcionan bien sin oop entonces, tal vez, simplemente déjalo.

+0

si cree que OOP en javascript es innecesario o incluso malo, obviamente no ha intentado con jQuery. Te animo a que te trates a ti mismo. :] –

+0

Utilicé jQuery y encontré muchas características de programación funcional allí. No sé cómo proporciona OOP, pero escuché que ExtJS tiene un buen soporte de OOP. Pero ahora realmente no usé Ext. – Roman

0

Tener la capacidad de pasar todo un objeto que tiene un montón de métodos/funciones que puede llamar con ese objeto. Por ejemplo, supongamos que quiere pasar un mensaje, solo necesita pasar un objeto y todos los que lo obtengan tendrán acceso a todas sus funciones.

Además, puede declarar las funciones de algunos objetos como públicas y otras como privadas. También existe el concepto de una función amiga donde solo los objetos que están relacionados a través de las jerarquías OO tienen acceso a las funciones de sus amigos.

Los objetos ayudan a mantener las funciones cerca de los datos que usan y lo encapsula todo en una sola entidad que se puede pasar fácilmente.

3

Siempre dé ejemplos.

Tome un poco de su código que cree que es malo. Re-escribe para ser mejor. Explica por qué es mejor. Tus colegas estarán de acuerdo o en desacuerdo.

Nadie usa (o debería usar) técnicas porque son buenas técnicas, deberían (deberían) usarlas porque producen buenos resultados. Las ventajas del uso muy simple de clases y objetos suelen ser bastante fáciles de ver, por ejemplo, cuando tiene una matriz de objetos con propiedades n en lugar de n, una para cada campo que le interese, y así sucesivamente.

Cuestiones relacionadas