oop - móviles - manual de programacion android pdf
¿Cuántos objetos son demasiados? (11)
¿Que tan larga es una pieza de cordon? (el doble de la longitud desde el medio hasta el final, pero eso está al lado del punto)
Creo que realmente depende de lo que estés escribiendo y de cómo lo hayas escrito. La cantidad de objetos es una mala medición, debería preocuparse por la complejidad de su modelo de objeto, no por la cantidad de objetos que tiene. Qué tan estrechamente acoplados están tus objetos es lo que debes estar preguntando.
Si tienes 100 tipos diferentes de objetos Bird, todos los cuales implementan una interfaz y los métodos compartidos están en una clase abstracta, entonces no tienes demasiados objetos porque tal vez necesites que cada Bird actúe de manera diferente.
Sin embargo, si tiene un lío de objetos que implementan el mismo código, entonces tiene demasiados objetos y puede refactorizarse para tener menos.
De manera similar, si tiene una gran clase que contiene muchas funcionalidades dispares, entonces tiene muy pocas clases.
A menos que tenga clases que hagan lo mismo o estén replicando cosas que otras clases en el marco ya hacen, está bien.
Y recuerde que solo porque puede usar la herencia no significa que tenga que hacerlo, la composición a menudo es mejor.
Al diseñar una aplicación, ¿llega un punto en el que tiene demasiados objetos? ¿Cómo determinas cuándo has cruzado la línea de granularidad en tu modelo de objetos?
Creo que es imposible responder a su pregunta sin conocer su problema.
Depende mucho del problema que intentas resolver con tu aplicación.
Iraimbilanja tiene toda la razón. Si comienzas a crear objetos para todo lo que se cruza en tu camino, pronto te preguntarás cuál es el uso que puedes darles, y por qué diablos estás dedicando tiempo a crearlos.
Diría que probablemente deberías preocuparte más por tener muy pocos objetos / clases. SRP es algo a lo que hay que atenerse ya que generalmente conduce a un código más limpio y legible.
En el momento en que te preguntas "¿por qué demonios es este un objeto?"
Recientemente tuve una clase de "BetForgetter" que refactoré en 2 líneas de código en otra clase.
Esto es probablemente un síntoma de otro problema .
En mi humilde opinión: siempre que tenga un buen proyecto, espacio de nombres y / u organización de directorio, junto con una convención de nomenclatura razonable, debería poder manejar cualquier cantidad de clases fácilmente.
PD: supongo que quisiste decir "clases" cuando dijo "objetos".
No estoy seguro de cuál es la respuesta en el alcance de un proyecto completo, pero generalmente puedo decir que dos clases podrían estar mejor si dependen demasiado el uno del otro.
No hay reglas duras y rápidas, pero depende de la discreción del programador.
Pero como regla general, si estás perdiendo el tiempo escribiendo clases para la operación más pequeña, eso es para muchos ... y complejos. Si estás escribiendo megalumps de código, entonces eso es muy poco.
No solo con demasiados objetos sino también con demasiada complejidad , detecto el punto cuando me siento perdido leyendo mi código después de un día libre.
Nunca puedes tener demasiados de ellos, pregúntale a cualquier programador decente de Java.
Un proyecto con diseño de OO apropiado, con cientos de objetos, está en un estado mucho mejor que uno con menos clases monolíticas.
Supongo que estás hablando de tipos y no de objetos (sé que se llama modelo de objeto, pero realmente es un modelo de los tipos involucrados).
De todos modos, si se suscribe al Principio de Responsabilidad Individual, que establece que cada tipo debe manejar una sola responsabilidad, el número de tipos crecerá a medida que la aplicación crezca.
Sin embargo, cada tipo debe ser bastante fácil de comprender debido a su tamaño limitado, y suponiendo que tiene algún tipo de estructura en su lugar, rara vez (o nunca) debe buscar todos los tipos a la vez.
La gestión del proyecto de software grande se trata de dividir las cosas en partes manejables y etiquetarlas de una manera sensata. Si haces eso, la cantidad de tipos se vuelve menos importante en mi experiencia.