Pregunta

¿Hay herramientas que ampliarán código orientado a objetos para que no haya intercambio de cualquier tipo? Por ejemplo si tengo dos clases A y B que heredan C entonces la herramienta se ajustaría las clases A y B para ningún uso más largo C. También sería agradable si la herramienta hizo esto y todavía compila y produce los mismos resultados. Creo que la principal dificultad sería ajustar cualquier lógica condicional si el tipo de clase se comprueba de forma dinámica.

Sé que esto es totalmente inútil desde el punto de vista de la máquina, pero sería un ejercicio académico divertido.

¿Fue útil?

Solución

Si bien hay varias herramientas de refactorización por ahí, dudo que su pregunta tiene aplicación práctica, ya que requeriría el conocimiento contextual sustancial y la intervención humana para llevar a cabo ese tipo de manipulación automática.

En su ejemplo, no es lo suficiente para que A y B obtienen métodos y propiedades de C, pero el hecho de que, en muchos casos, hay lugares en los que desee lado A (o B) a un método y lo han tratado como una C o, tal vez quiera que darlo a algo que tiene una C, pero tienen (o B) comportamiento específico de un invocó --- imaginar una colección que invoca .DoThing () en cualquier objeto que está dentro de ella.

Habría que no sólo el busto, aparte de las clases, pero tienen todo tipo de otras funciones sobrecargadas con una gran cantidad de redundancia en busca de código (especialmente para los tipos, no sólo los comportamientos).

Yo diría que mientras una interesante experimento mental, tal vez deberíamos colocarlo en la pila mala idea. Dudo que ayudaría para facilitar la lectura, la extensibilidad, o el rendimiento.

Otros consejos

El problema con esto es que el código que utiliza C en lugar de A o B es difícil de tratar:

public void workWithSomeC( C useThis ) {  ... }

en nuestro código OO nos puede pasar a una A o una B de dicha función. No se puede hacer que si A y B ya no tienen nada en común.

Yo pensaría mediante la duplicación de dicho código algo podría llegar a funcionar, pero bueno pena lo que una idea horrible; -)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top