Acabo de encontrar lo siguiente en un manual de laboratorio en la universidad:
Es necesario estudiar las interfaces de las clases generando el javadoc para ellas para que sepa qué operaciones se proporcionan (siéntase libre de mirar el código, pero cuando use el código de otra persona, como aquí, debe trabajar desde el javadoc en lugar de el código siempre que sea posible).
No entiendo por qué este es el caso; ya que el javadoc podría estar desactualizado o describir mal la función del código. ¿Seguramente mirar el código fuente y leer los comentarios de javadoc es lo mejor?
¿Hay alguna razón por la cual, o un caso cuando leer solo el javadoc es lo mejor que se puede hacer?
source-code
comments
javadocs
Todd Davies
fuente
fuente
Respuestas:
La recomendación probablemente sea sobre la programación en una interfaz en lugar de la implementación .
Claro, si tiene acceso al código, entonces no hay nada que le impida mirar la implementación para comprender cómo funciona. Pero siempre debe asegurarse de que el cómo no influya en su consumo de la API.
Cuando consume una API, está trabajando en contra de una abstracción. Intente preocuparse solo por lo que ofrece la API (el contrato) y no por el cómo (la implementación).
Esto se debe a que no hay garantía de que la implementación de una API no cambie drásticamente de una versión a la siguiente, incluso si el contrato no ha cambiado.
fuente
AddOnlyDictionary
que promete mantener el orden de inserción y ofrece ...Dictionary
y las personas podrían migrar hacia el nuevo cuando escriben código que no necesita el comportamiento anterior. Tenga en cuenta que la capacidad de mantener el orden de adición generalmente no es relevante para el código que recibe unDictionary
mensaje desde otro lugar (ya que un diccionario recibido desde otro lugar puede haber eliminado un elemento en algún momento), pero solo para el código que crea instancias a través del constructor. En cualquier caso, si un diccionario no aceptará una garantía Además orden ...Además de la diferencia entre la interfaz y la implementación, ya explicada en la respuesta anterior , hay otro aspecto importante: la complejidad .
Los sistemas de la vida real suelen ser complejos. Si comienza a leer el código de una clase, encontrará que también debe ir y leer el código de otra clase, luego otra, etc. Algunas horas después, simplemente se perderá en toda la complejidad y No recordaré quién llama qué y en qué casos.
Cuando usa solo los comentarios de la interfaz, mitiga toda esta complejidad. Puede ser que debajo del capó, todo sea simple. O puede ser que bajo el capó, docenas o cientos de clases interactúen entre sí, lo que hace prácticamente imposible mantener toda la imagen en su cabeza.
Puedes hacer un experimento.
Encuentre una parte en OpenCV que le interese. Lea la documentación de la interfaz. ¿Cuánto tiempo se tarda en poder comprender los conceptos básicos y utilizar eficazmente la biblioteca?
Ahora mire la implementación . ¿Cuántas clases son llamadas directamente por la interfaz? ¿Cuántas clases convoca cada una de esas clases? ¿Cuántas líneas de código hay? Cuantos metodos ¿Cuánto tiempo le tomaría explorar todo este código fuente antes de tener un desbordamiento de pila en su cerebro?
fuente
Si bien tiene toda la razón de que JavaDoc puede estar desactualizado o ser malo, tiende a estar en un mejor formato para leer al por mayor que el código en un IDE. Y lo más importante, está en lenguaje natural. Eso es importante para dos casos:
Dicho esto, creo bastante en el código legible. Para los desarrolladores experimentados, espero que leer el código sea un mejor enfoque casi todo el tiempo si esa opción está disponible.
fuente