Entonces, tenemos a un tipo al que le gusta escribir métodos que toman objetos como parámetros, para que puedan ser 'muy flexibles'. Luego, internamente, o bien realiza el casting directo, la reflexión o la sobrecarga de métodos para manejar los diferentes tipos.
Siento que esta es una mala práctica, pero no puedo explicar exactamente por qué, excepto que hace que sea más difícil de leer. ¿Existen otras razones más concretas por las que esto sería una mala práctica? ¿Cuáles serían esos?
Entonces, algunas personas han pedido un ejemplo. Tiene una interfaz definida, algo como:
public void construct(Object input, Object output);
Y él planea usar estos colocando varios en una lista, de modo que genere bits y los agregue al objeto de salida, de este modo:
for (ConstructingThing thing : constructingThings)
thing.construct(input, output);
return output;
Luego, en la cosa que implementa construct
, hay una cosa de reflexión desvencijada que encuentra el método correcto que coincide con la entrada / salida y la llama, pasando la entrada / salida.
Sigo diciéndole que funciona, entiendo que funciona, pero también lo hace poner todo en una sola clase. Estamos hablando de reutilización y mantenibilidad, y creo que en realidad se está limitando a sí mismo y tiene menos reutilización de lo que piensa. La capacidad de mantenimiento, aunque probablemente sea alta para él en este momento, probablemente será muy baja para él y para cualquier otra persona en el futuro.