Con suerte, he estado leyendo " Clean Code " de Robert Martin para convertirme en un mejor programador. Si bien nada de esto hasta ahora ha sido realmente innovador, me ha hecho pensar de manera diferente sobre la forma en que diseño aplicaciones y escribo código.
Hay una parte del libro con la que no solo no estoy de acuerdo, sino que no tiene sentido para mí, específicamente en lo que respecta a las convenciones de nombres de interfaz. Aquí está el texto, tomado directamente del libro. He resaltado el aspecto de esto que encuentro confuso y quisiera aclaraciones.
Prefiero dejar las interfaces sin adornos. El I anterior, tan común en los tacos heredados de hoy, es una distracción en el mejor de los casos y demasiada información en el peor. No quiero que mis usuarios sepan que les estoy entregando una interfaz .
Tal vez sea porque solo soy un estudiante, o tal vez porque nunca he hecho ninguna programación profesional o en equipo, pero me gustaría que el usuario supiera que es una interfaz. Hay una gran diferencia entre implementar una interfaz y extender una clase.
Entonces, mi pregunta se reduce a: "¿Por qué debemos ocultar el hecho de que alguna parte del código espera una interfaz?"
Editar
En respuesta a una respuesta:
Si su tipo es una interfaz o una clase es su negocio, no el negocio de alguien que usa su código. Por lo tanto, no debe filtrar detalles de su código en este código de terceros.
¿Por qué no debería "filtrar" los detalles de si un tipo dado es una interfaz o una clase de código de terceros? ¿No es importante que el desarrollador externo use mi código para saber si implementarán una interfaz o extenderán una clase? ¿Las diferencias simplemente no son tan importantes como las imagino?
to know whether they will be implementing an interface or extending a class
: sí, pero la mayoría de los usuarios de su código lo llamarán, no lo implementarán o lo extenderán, y realmente no les importaría cuál es.