Alguém já tentou criar uma documentação completa do código primeiro, antes de realmente escrever o código? Eu estava pensando sobre isso mais cedo, porque pensei que ajudaria a escrever uma interface concreta e garantiria que seu design inicial não fosse pavimentado, fazendo você pensar sobre como as classes interagem. isso é uma boa ideia? Alguém já tentou? Ell
documentation
ell
fonte
fonte
Respostas:
Sim.
Isso faz você pensar sobre o que exatamente seu código deve fazer. A idéia é que você possa começar com qualquer parte do código e saber exatamente o que precisa ser feito para concluir esse módulo.
Também é mais fácil consertar algo na prancheta do que no IDE.
fonte
Existem duas maneiras de pensar sobre isso:
1) Documentação como nos documentos do Word, Wiki, etc. Por definição, você não pode ter uma documentação de código completa porque não possui um código para documentar. Você pode tentar documentar design de alto nível, suposições, interfaces e contratos primeiro.
2) Documentação como testes executáveis. Existe uma escola de pensamento que afirma que os testes de unidade executável são a melhor documentação. Essa escola de pensamento também defende esse tipo de documentação antes de escrever o código (TDD). Ao mesmo tempo, você não escreve todos os testes para todo o sistema desde o início. Você divide-os primeiro por casos de uso e depois faz testes e códigos por caso de uso.
fonte
Começando com a documentação é o modelo clássico em cascata e possui todas as armadilhas associadas a esse modelo. Em termos gerais, quanto mais você documenta, mais precisa atualizar quando os requisitos mudam. Um benefício de começar com a documentação do usuário é que você pode obter feedback (e, portanto, alterações) antes. Mas a experiência mostra que a maioria das pessoas é ruim em mapear mentalmente a documentação para as ações. Por isso, usamos protótipos, que permitem que as pessoas usem o software e dê feedback dessa maneira.
Uma variação da "documentação primeiro" é a programação alfabetizada . Comece escrevendo uma descrição do que o programa fará da perspectiva dos programadores. Continue ajustando isso até compilar. Voila, um programa alfabetizado.
fonte
Pessoalmente, acho melhor usar diagramas (como UML) para fazer modelagem simples para mostrar o fluxo das coisas. Isso é muito mais rápido do que documentar as coisas em palavras e, se bem feito, pode ser igualmente descritivo. Eu hesitaria em fazer a Documentação Completa, porque, pessoalmente, nunca tive um projeto em que trabalhei que não mudou ao longo da programação.
EDIT: No entanto, alguma documentação deve ser feita à medida que você avança. Isso facilita a documentação completa posteriormente.
fonte
Joshua Bloch discute esse ponto em sua entrevista para o livro "Coders at Work".
Ao contrário de visões mais ortodoxas e acadêmicas, ele aconselha algo que melhore seus pensamentos (talvez você já tenha lido isso lá?): Antes de escrever a documentação, você precisa entender o que deseja do sistema e obter uma visão mais "real". " sentindo-me. Para esse propósito, ele projetaria parte das interfaces e algum código do cliente que as utiliza.
Se você já está pensando nesse sentido, seria bom se você pudesse ler o livro e ler a entrevista inteira. Como eu disse, ele é sempre muito esclarecedor.
fonte
Algumas pessoas ainda vão além e afirmam que uma empresa deve trabalhar completamente para trás, então
Consulte http://www.allthingsdistributed.com/2006/11/working_backwards.html
fonte
Escrever a documentação completa do código primeiro é provavelmente um exagero e uma reminiscência da metodologia em cascata. No entanto, descobri que uma abordagem mais pragmática está escrevendo o README primeiro. Aqui está o porquê:
O README não documenta todos os detalhes do seu projeto. Em vez disso, normalmente contém as seguintes informações:
Escrever o "discurso de vendas" antecipadamente me obriga a esclarecer por que esse projeto deveria existir e por que os desenvolvedores deveriam usá-lo. O simples ato de escrever frases completas para descrever o projeto geralmente o altera para melhor: você o entende melhor, desenvolve novas idéias e descobre possíveis problemas. Também é uma ótima ferramenta de priorização: qualquer coisa no "discurso de vendas" é essencial!
Os "exemplos rápidos" e o "guia de início rápido" me forçam a pensar nos principais casos de uso da perspectiva do usuário. Descobri que fazer isso antes de escrever qualquer código - antes de se atolar nos detalhes da implementação e nos prazos apertados - leva a APIs e designs muito mais limpos. Lembre-se: os programas devem ser escritos para as pessoas lerem e, incidentalmente, para as máquinas executarem ( SICP ).
Em "documentação adicional", crio um esboço das peças que precisarão de documentação detalhada, a ser feita posteriormente. "Organização do projeto" permite-me descobrir quem trabalhará no projeto e nas práticas de codificação. "Avisos legais" ... bem, também podem tirá-los do caminho.
Depois de ter este README básico em vigor, você terá um documento útil para discussão, revisões de design, divisão do trabalho e planejamento do projeto. Enquanto você trabalha no projeto, verifique frequentemente o README para garantir que você ainda esteja no caminho certo. Além disso, atualizar gradualmente o README e a "documentação adicional" à medida que avança significa que toda a sua documentação será concluída quando o código for concluído, o que é uma experiência muito mais agradável do que ter que se apressar em documentar tudo no último minuto.
Para mais informações, confira o seguinte:
fonte
Por que você não gostaria de pensar em como as aulas interagem? Por que isso é ruim? Na verdade, penso nas interações antes mesmo de saber quais são as aulas. Dessa forma, as classes se identificam.
fonte
Você deve ter uma idéia do que planeja fazer antes de escrever o código. A questão sempre é como você mantém o que codificou em sincronia com o que escreveu? Alguns dizem que não tente, outros dizem que esqueça os documentos iniciais e mantenha os comentários. Claro que o código é sempre a fonte canônica. A questão passa a ser se vale a pena documentar o que o código faz para quem chega mais tarde ou usa o código. Qualquer um pode descobrir o que uma função faz. O trabalho do escritor é ajudar alguém a entender em 5 minutos o que alguém pode descobrir em uma hora. Adicione os deltas e determine seu caminho.
fonte