Eu quero melhorar minhas habilidades de programação estudando projetos de código aberto famosos, mas acho que é fácil se perder apenas pulando no código-fonte.
Então, decidi ler a documentação deles sobre o design ou a arquitetura (como diagramas UML) para ter uma idéia geral da organização do código primeiro. Para minha surpresa, no entanto, não consigo encontrar nenhuma documentação arquitetural para grandes projetos de código aberto, como Hibernate, Spring, ASP.NET MVC, Rails, etc.
Então comecei a me perguntar: como um projeto de código aberto pode ser bem-sucedido se os desenvolvedores iniciantes não têm documentação de arquitetura / design para ler ou se o gerente de projeto acabou de abrir o código-fonte, mas fechou a documentação?
open-source
documentation
asp.net-mvc
TomCaps
fonte
fonte
Respostas:
A suposição é invariavelmente feita de que você sabe o que está fazendo e tem uma compreensão razoavelmente íntima do que está indo (e esperando) ver.
Se você olhar o código PHP da estrutura do Symfony, por exemplo, você já deve saber sobre injeção de dependência, eventos, o modelo / visão / padrão do controlador e assim por diante.
Da mesma forma, se você mergulhar no código C do kernel do linux, a suposição é que você será realisticamente competente em modularidade, sinais, processos, threads e outras coisas. Também é esperado que você tenha um talento especial para comer hexadecimal durante todo o dia e escavar através de lixões com uma pá gigante.
Os mantenedores não terão o trabalho de documentar a arquitetura, porque são coisas práticas. Na ocasião, você encontrará um esboço do que está na árvore de origem. Mais tipicamente, porém, a maneira como a árvore de origem é organizada torna as coisas auto-explicativas.
Resumindo, se você não possui nenhuma das habilidades que os mantenedores esperam que você conheça no momento em que analisa o código deles, provavelmente está pesquisando coisas que estão amplamente acima da sua nota de pagamento. Familiarize-se primeiro com os conceitos - Qual é o modelo MVC? O que é injeção de dependência? Etc. Então mergulhe.
fonte
Os projetos de código aberto mais bem-sucedidos foram bem-sucedidos porque, acima de tudo, o programa era impressionante ou fez algo que nenhum outro programa poderia fazer na época. Isso não significa necessariamente que a fonte esteja bem documentada, já que os programadores que iniciaram o projeto conhecem o código suficientemente bem para não precisar dele. É uma realidade infeliz que os projetos de código aberto não precisem ser bem documentados. Ele precisa ser um bom programa ou ser um programa medíocre, mas bem documentado para que os programadores demonstrem interesse nele.
fonte
Como os desenvolvedores de código aberto geralmente são talentosos e também escolhem projetos em sua área de especialização, eles já têm "documentação" dentro de seus crânios. Com pouco exagero, é necessária uma documentação completa apenas se você não tiver um desses: o)
Para ser sincero, eu realmente não leio "documentação" quando enfrento uma base de código desconhecida. Uma introdução rápida, talvez alguns esboços conceituais e direto para o código! Experimente, tente pequenas alterações. Funciona perfeitamente para código bem projetado. Se eu enfrentar uma bagunça horrível, a melhor maneira de aprendê-las é refatorar pouco a pouco para melhorar a clareza (idealmente com a ajuda do teste de unidade).
Razões adicionais podem ser as raízes orgânicas simples desses projetos. A arquitetura é então uma visão bastante evoluída nas mentes dos desenvolvedores do que a entidade "documentada" declarada.
fonte
A razão pela qual esses documentos geralmente não existem é bastante simples: os programadores gostam de programar, não escrevem documentação. Especialmente em projetos de código aberto, com os quais os desenvolvedores costumam contribuir durante seu tempo livre / lazer.
Basicamente, escrever documentação não é divertido. E se eles não são pagos por isso, quem quer gastar seu tempo livre fazendo algo que não é divertido?
fonte