aboutsummaryrefslogtreecommitdiff
path: root/aulas/reinventando.rst
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