¿Es buena idea difundir código con refactorización de comentarios?

11

Estoy trabajando en un proyecto de "código de espagueti", y mientras estoy arreglando errores e implementando nuevas características, también realizo algunas refactorizaciones para que el código sea comprobable por unidad.

El código suele estar tan estrechamente acoplado o complicado que corregir un pequeño error daría como resultado que se reescriban muchas clases. Así que decidí dibujar una línea en algún lugar del código donde dejo de refactorizar. Para aclarar esto, dejo algunos comentarios en el código que explican la situación, como:

class RefactoredClass {
    private SingletonClass xyz;

    // I know SingletonClass is a Singleton, so I would not need to pass it here.
    // However, I would like to get rid of it in the future, so it is passed as a
    // parameter here to make this change easier later.
    public RefactoredClass(SingletonClass xyz) {
        this.xyz = xyz;
    }
}

O, otro pedazo de pastel:

// This might be a good candidate to be refactored. The structure is like:
// Version String
//    |
//    +--> ...
//    |
//    +--> ...
//          |
//    ... and so on ...    
//
Map map = new HashMap<String, Map<String, Map<String, List<String>>>>();

¿Es esta una buena idea? ¿Qué debo tener en cuenta al hacerlo?

Uooo
fuente
1
relacionado / duplicado: ¿Tienen sentido TODOS los comentarios?
mosquito
3
Este es un tema basado en la opinión; pero mi opinión personal es que este es exactamente el tipo de comentario que es útil, y que desearía encontrar en el código de otras personas: le brinda información importante que aún no es obvia del código; no lo que hace un método, sino por qué .
Kilian Foth
2
HashMap <String, Map <String, Map <String, List <String>
>>>
55
Los comentarios que me dicen por qué un código parece maloliente son muy apreciados. Es posible que no entienda el código base, así que solo veré un problema y pensaré "¿Qué demonios?", Pero un comentario que explique por qué es así me ayudará a resolver el código más rápido. Sí, haz mucho esto. (¡Suponiendo que no pueda arreglar el código para que no sea WTF, por supuesto!)
Phoshi el

Respuestas:

13

¿Es buena idea difundir código con refactorización de comentarios?

Si ha asignado tiempo para terminar su refactorización, y si realmente lo hace, entonces sí, funcionará.

¿Qué debo tener en cuenta al hacerlo?

Los IDE modernos tienen una opción para buscar y mostrar líneas TODO. Debe verificarlos de vez en cuando e intentar reducir sus números siempre que pueda.

BЈовић
fuente
2

Haría /// @todocomentarios sobre tales consideraciones para doxygen o una etiqueta personalizada fácil de instalar para javadoc , por lo que se extrae automáticamente a la sección de tareas pendientes de los documentos de la API. Los comentarios simples se pasarán por alto con demasiada facilidad y eventualmente se perderán en las profundidades del código.


[Editar] Por cierto: esta es una buena idea:

mientras estoy arreglando errores e implementando nuevas características, también realizo algunas refactorizaciones para que el código sea comprobable por unidades

Creo que (¡sé por experiencia!), La refactorización puede ser muy peligrosa, especialmente cuando todavía no hay pruebas unitarias. Por lo tanto, será mejor que restrinja su trabajo extra (al corregir errores, etc.) al agregar comentarios de tareas pendientes ... Todos sabemos: cuando sea posible;)

Lobo
fuente
El fragmento de código en la pregunta se lee como Java, ¿por qué recomienda Doxygen?
mosquito
Sabía que doxygen admite @todo; para javadoc no estaba seguro, pero ¿es realmente tan importante el lenguaje? Desde mi punto de vista, el ejemplo de Java ilustra un problema más profundo.
Wolf
1
@gnat: ¿Crees que es mejor ahora?
Wolf