Por que ainda incorporamos descrições em linguagem natural do código-fonte (ou seja, a razão pela qual uma linha de código foi escrita) dentro do código-fonte, e não como um documento separado?
Dado o amplo espaço imobiliário oferecido aos ambientes de desenvolvimento modernos (monitores de alta resolução, monitores duplos, etc.), um IDE poderia fornecer painéis de semi-bloqueio em que o código-fonte é visualmente separado - mas intrinsecamente ligado a - seus comentários correspondentes. Por exemplo, os desenvolvedores poderiam escrever comentários sobre o código-fonte em uma linguagem de marcação hiperligada (vinculando-se a requisitos adicionais de software), o que impediria simultaneamente a documentação de sobrecarregar o código-fonte.
Quais deficiências inibiriam esse mecanismo de desenvolvimento de software?
Uma maquete para ajudar a esclarecer a pergunta:
Quando o cursor está em uma linha específica no código-fonte (mostrado com um plano de fundo azul acima), a documentação que corresponde à linha no cursor é destacada (ou seja, diferenciada dos outros detalhes). Conforme observado na pergunta, a documentação permaneceria na etapa de bloqueio com o código-fonte, à medida que o cursor salta pelo código-fonte. Uma tecla de atalho pode alternar entre "modo de documentação" e "modo de desenvolvimento".
As vantagens potenciais incluem:
- Mais código fonte e mais documentação na (s) tela (s) de uma só vez
- Capacidade de editar a documentação independentemente do código-fonte (independentemente do idioma?)
- Escreva documentação e código fonte em paralelo, sem conflitos de mesclagem
- Documentação com hiperlink em tempo real com formatação de texto superior
- Tradução automática em tempo quase real para diferentes idiomas naturais
- Cada linha de código pode ser claramente vinculada a uma tarefa, requisito comercial, etc.
- A documentação pode registrar o carimbo de data / hora automaticamente quando cada linha de código é gravada (métricas)
- Inclusão dinâmica de diagramas de arquitetura, imagens para explicar relações, etc.
- Documentação de fonte única (por exemplo, trechos de código de tag para inclusão no manual do usuário).
Nota:
- A janela da documentação pode ser recolhida
- O fluxo de trabalho para visualizar ou comparar arquivos de origem não seria afetado
- Como a implementação acontece é um detalhe; a documentação pode ser:
- mantido no final do arquivo de origem;
- dividido em dois arquivos por convenção (
filename.c
,filename.c.doc
); ou - totalmente orientado a banco de dados
- Por documentação com hiperlink, refiro-me à vinculação a fontes externas (como StackOverflow ou Wikipedia) e documentos internos (ou seja, um wiki em um subdomínio que poderia fazer referência cruzada da documentação de requisitos de negócios) e outros arquivos de origem (semelhantes aos JavaDocs).
Tópico relacionado: O que há com a aversão à documentação no setor?
Gson()
objeto está sendo instanciado em relação à classe MainActivity, nem como está relacionado à solução de um requisito de negócios específico. A descrição do próprio código, em vez das APIs que ele usa, pode estar em uma janela separada, independentemente dos JavaDocs de terceiros.