É uma boa idéia espalhar código com comentários de refatoração?

11

Estou trabalhando em um projeto "código-espaguete" e, enquanto corrigo bugs e implemento novos recursos, também faço refatoração para tornar o código testável por unidade.

O código geralmente é tão fortemente acoplado ou complicado que a correção de um pequeno bug resultaria na reescrita de muitas classes. Então, decidi desenhar uma linha em algum lugar do código em que paro de refatorar. Para deixar isso claro, deixo alguns comentários no código que explicam a situação, 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;
    }
}

Ou outro pedaço de bolo:

// 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>>>>();

isso é uma boa ideia? O que devo ter em mente ao fazer isso?

Uooo
fonte
1
relacionados / duplicados: Os comentários do TODO fazem sentido?
Gnat #
3
Este é um tópico baseado em opinião; mas minha opinião pessoal é que esse é exatamente o tipo de comentário que é útil e que eu gostaria que encontrasse no código de outras pessoas: informa informações importantes que ainda não são óbvias no código; não o que um método faz, mas por quê .
precisa
2
HashMap <Sequência, Mapa <Sequência, Mapa <Sequência, Lista <>
>>>
5
Comentários que me dizem por que um pedaço de código parece fedorento são incrivelmente apreciados. Talvez eu não entenda bem a base de código, então vou ver um problema e pensar em "Que porra é essa?", Mas um comentário explicando por que ela é como está me ajudará a entender o código mais rapidamente. Sim, faça muito isso. (Supondo que você não pode corrigir o código para não ser WTF, é claro!)
Phoshi

Respostas:

13

É uma boa idéia espalhar código com comentários de refatoração?

Se você alocou tempo para concluir sua refatoração, e se realmente o fizer, então sim - funcionará.

O que devo ter em mente ao fazer isso?

Os IDEs modernos têm uma opção para encontrar e mostrar linhas TODO. Você deve verificá-los de vez em quando e tentar reduzir o número deles sempre que puder.

BЈовић
fonte
2

Gostaria de fazer /// @todocomentários sobre essas considerações para doxygen ou uma tag personalizada fácil de instalar para javadoc , para que ela seja extraída automaticamente para a seção todo dos documentos da API. Comentários simples serão ignorados com muita facilidade e, eventualmente, se perderão nas profundezas do código.


[Editar] BTW: essa é uma boa ideia:

enquanto eu estou corrigindo bugs e implementando novos recursos, também faço refatoração para tornar o código testável por unidade

Penso que (por experiência!), A refatoração pode ser muito perigosa, especialmente quando ainda não há testes de unidade. Portanto, é melhor restringir seu trabalho extra (ao corrigir bugs, etc.) ao adicionar comentários ao todo ... Todos sabemos: sempre que possível;)

Lobo
fonte
o trecho de código da pergunta é como Java, por que você recomenda o Doxygen?
Gnat #
Eu sabia que o doxygen suporta @todo - para javadoc, eu não tinha certeza - mas a linguagem é realmente tão importante? Do meu ponto de vista, o exemplo do java ilustrou um problema mais profundo.
Lobo
1
@gnat: Você acha que é melhor agora?
Wolf