blob: f04a9c7ec4bcdba1484566a35e9dbaaddf7b7b9f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
7. Quando (não) reinventar a roda
=================================
7.1 - Patterns
--------------
7.1 - O que são e por quê usar?
-------------------------------
* Design Patterns são "formas" de desenvolvimento reutilizáveis e consideradas como boas práticas.
* A lista de patterns conhecidos é long demais para este curso
* Daremos alguns exemplos ilustrativos que atendem o nosso critério de simplicidade.
* São recomendações! Mais importante que usá-las é ter capacidade crítica para determinar quais fazem ou não sentido para o seu projeto.
7.2 - Exemplos
--------------
Daremos breves exemplos em três campos:
* Design: separação de código de dados, sobretudo dados sigilosos!
* Metodologia : DDD e TDD: documentar e testar antes, durante ou depois?
* Implementação: Filosofia UNIX:
* Pequenos softwares e bibliotecas (desacoplamento).
* Que fazem bem uma coisa.
* E que podem ser facilmente combinados.
7.2 - Anti-patterns
-------------------
São o oposto das design patterns: formas de desenvolvimento não recomendadas. Exemplos:
* O mito da pessoa-mês (Lei de Brooks).
* Hype: cuidado com o ciclo dos modismos!
* Inferno de dependências.
* Bitrot: decaimento natural do código!
7.3 - Documentação: lendo e escrevendo
--------------------------------------
* Documente não só para os outros, mas para você mesmo(a) no futuro.
* Quanto mais próxima a documentação está do código, mais difícil dela se desatualizar.
* Docblocks / heredocs: podem ser convertidos em documentação indexada, referenciada e navegável.
* Documente procedimentos enquanto você os realiza.
Roteiro do screencast:
* Concluindo a documentação do blogático, fazendo um commit e um release tag.
7.4 - Inventando, reinventando e desinventando
----------------------------------------------
* Caso tenha acompanhado este curso desde o começo e construiu nosso projeto/invento "blogático" desde o ínicio, agora você tem um software para documentar seu aprendizado em desenvolvimento. Acontece que ele é bem simples. E se você quiser algo mais completo e que seja uma solução pronta, já disponível?
* Agora é hora de converter nosso projeto blogático para uma plataforma com mais funcionalidades!
Roteiro do screencast:
::
cd ~/projetos/blogatico
cp -r ../boaspraticas/_templates/ikiwiki/* .
make
7.5 - Atividades
----------------
#. Consulte as referências por diversos design patterns e antipatterns. Quais patterns você acha mais interessantes? Quais antipatterns são mais perigosos?
#. Crie a documentação do seu projeto. Pense que ela será lida por uma audiência bem geral que nunca ouviu falar do projeto e será determinante para que decidam se irão usá-lo ou não.
7.6 - Referências
-----------------
* `Versionamento Semântico 2.0.0 <http://semver.org/lang/pt-BR/>`_.
* `On Documentation-Driven Development // Collective Idea | Crafting web and mobile software based in Holland, Michigan <http://collectiveidea.com/blog/archives/2014/04/21/on-documentation-driven-development/>`_.
* `Readme Driven Development <http://tom.preston-werner.com/2010/08/23/readme-driven-development.html>`_.
* https://scotch.io/bar-talk/s-o-l-i-d-the-first-five-principles-of-object-oriented-design
|