SlideShare uma empresa Scribd logo
1 de 105
Por que você deveria
Documentar seu código?


Lennon Manchester
@leManchester
DOCUMENTAÇÃO
Vamos ao ínicio.....
Documentação?
É o conjunto de documentos...
Documentação?
É o conjunto de documentos...


Documento?
Um documento (do latim documentum derivado de docere “ensinar,
demonstrar”) é qualquer meio, sobretudo gráfico, que comprove a
existência de um fato, a exatidão ou a verdade de uma afirmação etc.
No meio jurídico, documentos são frequentemente sinônimos de atos,
cartas ou escritos que carregam um valor probatório.
choriiii
iiiiiiiiiiiii
  iiiiii...
Leronardo?!?
@shivamib
Loren Segal
@lsegal




 http://yardoc.org/
Legado
 2.0?
O que é um
 Legado?
Porque ninguém gosta
  de trabalhar com
   Código Legado?
Difícil?
Complexo?
Coisas sem sentido?
CAOS?
.... Ahh tá,
   Não tem
Documentação?
Métodos


          Ágeis
Indivíduos e interação entre eles
        mais que processos e ferramentas

  Software em funcionamento e nunca mais
       terar que documentar seu codigo

        Colaboração com o cliente
        mais que negociação de contratos

Responder a mudanças mais que seguir um plano
Então vamos para o
  interessante....
README DRIVEN
 DEVELOPMENT
WriteME DRIVEN
DEVELOPMENT
choriiii
iiiiiiiiiiiii
  iiiiii...
Overhead de
pensamentos
Motivação
Mão na massa
Escreve
Seu guia
CODE DOCUMENTATION
Contrato
Contrato
Kent
Beck
Kent
Beck
• Communication
• Simplicity
• Flexibility
Communication

 Programs are read much more often
  than written and therefore should
   communicate clearly their intent.
     Code is primarily means of
           communication.

(For a typical enterprise system, a lot of
     code will be modified by many
  programmers over 5 – 15 years and
    they’ll all need to understand it.)
ELEMENTOS Boa Doc
          de uma
ELEMENTOS Boa Doc               de uma



- Descreva o comportamento (método ou classe).
ELEMENTOS Boa Doc                      de uma



- Descreva o comportamento (método ou classe).
- Evite a primeira pessoa ('We', 'I', 'You' is okay?!).
ELEMENTOS Boa Doc                      de uma



- Descreva o comportamento (método ou classe).
- Evite a primeira pessoa ('We', 'I', 'You' is okay?!).
- A primeira linha deve ser um sumário do método/classe.
ELEMENTOS Boa Doc                      de uma



- Descreva o comportamento (método ou classe).
- Evite a primeira pessoa ('We', 'I', 'You' is okay?!).
- A primeira linha deve ser um sumário do método/classe.
- Deixe de fora detalhes de implementação a não ser que
 eles afetem o seu uso.
ELEMENTOS Boa Doc                      de uma



- Descreva o comportamento (método ou classe).
- Evite a primeira pessoa ('We', 'I', 'You' is okay?!).
- A primeira linha deve ser um sumário do método/classe.
- Deixe de fora detalhes de implementação a não ser que
 eles afetem o seu uso.
- Use notas (@note) para dizer algo para que seu
usuário deve saber.
ELEMENTOS Boa Doc                      de uma



- Descreva o comportamento (método ou classe).
- Evite a primeira pessoa ('We', 'I', 'You' is okay?!).
- A primeira linha deve ser um sumário do método/classe.
- Deixe de fora detalhes de implementação a não ser que
 eles afetem o seu uso.
- Use notas (@note) para dizer algo para que seu
usuário deve saber.
- Referencias (classes, methods, URLs, @see).
ELEMENTOS Boa Doc                      de uma



- Descreva o comportamento (método ou classe).
- Evite a primeira pessoa ('We', 'I', 'You' is okay?!).
- A primeira linha deve ser um sumário do método/classe.
- Deixe de fora detalhes de implementação a não ser que
 eles afetem o seu uso.
- Use notas (@note) para dizer algo para que seu
usuário deve saber.
- Referencias (classes, methods, URLs, @see).
- Lista de parametros e os seus retornos e tipos.
O Nome história inteira....
     da variável
                   NÃO TE CONTA A
O Nome história inteira....
     da variável
                   NÃO TE CONTA A




         def find(name)
O Nome história inteira....
      da variável
                    NÃO TE CONTA A




            def find(name)
  String? “John”
O Nome história inteira....
      da variável
                    NÃO TE CONTA A




            def find(name)
  String? “John”
  Symbol? :John
O Nome história inteira....
      da variável
                     NÃO TE CONTA A




            def find(name)
  String? “John”
  Symbol? :John
  Hash? { :first => “John”, :last => “Lennon” }
D ocumentation
D riven
D evelopment
Write Docs    Write a   Validate Code
for a Method   Method     with Docs
Write Docs       Write a     Validate Code
for a Method      Method       with Docs




 Write a        Write Docs    Validate Code
 Method        for a Method    with Docs
class OS
  # Returns a list of String and
  # numbers displaying CPU information
  # of an OS: the CPU type, architecture, vendor
  # clock speed (as integer), temperature (as
  # integer) and voltage (as integer)
  def processor_info
   [ cpu_type, cpu_arch, cpu_vendor, cpu_clock,
      cpu_temp, cpu_voltage ]
  end
end
Yard   http://yardoc.org/
Yard                    http://yardoc.org/

class OS
  # @return [Array(String, String, String, Integer, Integer, Integer)]
  # CPU type, architecture, vendor, clock speed, temp and voltage of an OS
  def processor_info
   [ cpu_type, cpu_arch, cpu_vendor, cpu_clock,
      cpu_temp, cpu_voltage ]
  end
end
class OS
  def processor_info
   { :cpu_type     => cpu_type,
     :cpu_arch     => cpu_arch,
     :cpu_vendor => cpu_vendor,
     :cpu_clock => cpu_clock,
      :cpu_temp => cpu_temp,
      :cpu_voltage => cpu_voltage }
  end
end
Hash?
class OS
  def processor_info
   { :cpu_type     => cpu_type,
     :cpu_arch     => cpu_arch,
     :cpu_vendor => cpu_vendor,
     :cpu_clock => cpu_clock,
      :cpu_temp => cpu_temp,
      :cpu_voltage => cpu_voltage }
  end
end
class OS
  # @return [Hash{Symbol=>[String, Integer]}]
  # processor info filled into fields :cpu_type, :cpu_arch, :cpu_vendor,
  # :cpu_clock (Integer), :cpu_temp (Integer), :cpu_voltage (Integer)
  # representing proc values of a CPU
   def processor_info
    { :cpu_type     => cpu_type,
      :cpu_arch     => cpu_arch,
      :cpu_vendor => cpu_vendor,
      :cpu_clock => cpu_clock,
       :cpu_temp => cpu_temp,
       :cpu_voltage => cpu_voltage }
  end
end
STOP
class ProcessorInfo
  # @return [String] CPU type (AMD, Intel, ...)
  attr_accessor :cpu_type
  # @return [String] CPU Architeture (x86, ARM)
   attr_accessor :cpu_arch
   # @return [String] CPU speed in hz (3.4.ghz = 3400)
   attr_accessor :cpu_clock
end

class OS
   # @return [ProcessorInfo] proc info of current OS
   def processor_info
    ProcessorInfo.new.tap do |p|
      p.cpu_type, p.cpu_arch, p.cpu_ clock = cpu_type, cpu_arch, cpu_clock
   end
  end
end
Por que você
   deveria
 Documentar
seu Código?
Does it make



           sense?
References
Loren Segal - Just Say No To :nodoc: and Document Your Code!
http://www.youtube.com/watch?v=tCw7CpRvYOE

Maurício Aniche at QCon SP (2012):
Métodos ágeis: o que é folclore e o que é real?

Krzysztof, Stig, and Jakub - Programming like Kent Beck
http://blog.iterate.no/2012/06/20/programming-like-kent-beck/

Tom Preston-Werner
http://tom.preston-werner.com/2010/08/23/readme-driven-development.html


Images collected from Google Images®
Obrigado
 Perguntas?


              Lennon Manchester
                  @leManchester

Mais conteúdo relacionado

Mais procurados

Instalador - Arch Linux
Instalador - Arch LinuxInstalador - Arch Linux
Instalador - Arch Linuxacheiobyte
 
007 programando em python - funcoes
007   programando em python - funcoes007   programando em python - funcoes
007 programando em python - funcoesLeandro Barbosa
 
Primeiros passos no terminal (TcheLinux UCPEL 2012)
Primeiros passos no terminal (TcheLinux UCPEL 2012)Primeiros passos no terminal (TcheLinux UCPEL 2012)
Primeiros passos no terminal (TcheLinux UCPEL 2012)rafaeldelete
 
013 programando em python - arquivos
013   programando em python - arquivos013   programando em python - arquivos
013 programando em python - arquivosLeandro Barbosa
 
Treinamento de comandos Unix e Linux
Treinamento de comandos Unix e LinuxTreinamento de comandos Unix e Linux
Treinamento de comandos Unix e LinuxCid de Andrade
 
Curso de Shell Script 05/11
Curso de Shell Script 05/11Curso de Shell Script 05/11
Curso de Shell Script 05/11Rodrigo Silva
 
Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4garux
 
Introdução aos comandos Linux
Introdução aos comandos LinuxIntrodução aos comandos Linux
Introdução aos comandos LinuxCarlos Quadros
 
Linux comandos gerais e servidores de rede
Linux   comandos gerais e servidores de redeLinux   comandos gerais e servidores de rede
Linux comandos gerais e servidores de redefernandao777
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Pessoal
 
Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2garux
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlex Camargo
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework GrailsBruno Catão
 

Mais procurados (20)

String
StringString
String
 
Instalador - Arch Linux
Instalador - Arch LinuxInstalador - Arch Linux
Instalador - Arch Linux
 
teste
testeteste
teste
 
Shell Script v0
Shell Script v0Shell Script v0
Shell Script v0
 
007 programando em python - funcoes
007   programando em python - funcoes007   programando em python - funcoes
007 programando em python - funcoes
 
Primeiros passos no terminal (TcheLinux UCPEL 2012)
Primeiros passos no terminal (TcheLinux UCPEL 2012)Primeiros passos no terminal (TcheLinux UCPEL 2012)
Primeiros passos no terminal (TcheLinux UCPEL 2012)
 
013 programando em python - arquivos
013   programando em python - arquivos013   programando em python - arquivos
013 programando em python - arquivos
 
Treinamento de comandos Unix e Linux
Treinamento de comandos Unix e LinuxTreinamento de comandos Unix e Linux
Treinamento de comandos Unix e Linux
 
Curso de Shell Script 05/11
Curso de Shell Script 05/11Curso de Shell Script 05/11
Curso de Shell Script 05/11
 
Perl Moderno, dia4
Perl Moderno, dia4Perl Moderno, dia4
Perl Moderno, dia4
 
Introdução aos comandos Linux
Introdução aos comandos LinuxIntrodução aos comandos Linux
Introdução aos comandos Linux
 
Linux comandos gerais e servidores de rede
Linux   comandos gerais e servidores de redeLinux   comandos gerais e servidores de rede
Linux comandos gerais e servidores de rede
 
Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7Curso de ShellScript - Lm07 shellscript7
Curso de ShellScript - Lm07 shellscript7
 
C 1
C 1C 1
C 1
 
Perl Moderno, dia2
Perl Moderno, dia2Perl Moderno, dia2
Perl Moderno, dia2
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de strings
 
Apostila de sql oracle
Apostila de sql oracleApostila de sql oracle
Apostila de sql oracle
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
 
Shell script
Shell script Shell script
Shell script
 
Aula4
Aula4Aula4
Aula4
 

Destaque

全景家庭影院(世界各地)
全景家庭影院(世界各地)全景家庭影院(世界各地)
全景家庭影院(世界各地)family
 
Cursos avances-tecnologicos-motoniveladora-serie-m-caterpillar
Cursos avances-tecnologicos-motoniveladora-serie-m-caterpillarCursos avances-tecnologicos-motoniveladora-serie-m-caterpillar
Cursos avances-tecnologicos-motoniveladora-serie-m-caterpillarJavier Mitma Loayza
 
Paolita l.d.s
Paolita l.d.sPaolita l.d.s
Paolita l.d.sAndre2610
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiNoriyuki Yamaguchi
 
Compositcrap
CompositcrapCompositcrap
CompositcrapPsyFox
 
Projeto Censo Rotaractiano 2013 2015
Projeto Censo Rotaractiano 2013 2015Projeto Censo Rotaractiano 2013 2015
Projeto Censo Rotaractiano 2013 2015ROTARACT 4590
 
New microsoft office power point presentation (4)
New microsoft office power point presentation (4)New microsoft office power point presentation (4)
New microsoft office power point presentation (4)phamminhthai
 
Www.elecachat.fr samsung-series-9.html
Www.elecachat.fr samsung-series-9.htmlWww.elecachat.fr samsung-series-9.html
Www.elecachat.fr samsung-series-9.htmltodone
 
Identidad corporativa congreso tomate 09 def
Identidad corporativa congreso tomate 09 defIdentidad corporativa congreso tomate 09 def
Identidad corporativa congreso tomate 09 defJOSÉ LUIS LLERENA RUIZ
 
Diapositivas correo institucional aula virtual
Diapositivas correo institucional aula virtualDiapositivas correo institucional aula virtual
Diapositivas correo institucional aula virtualncorre
 
Copycat 비교 박상조
Copycat 비교 박상조Copycat 비교 박상조
Copycat 비교 박상조SangJoe85
 
Dossier programa ajuda infancia Setembre 2012
Dossier programa ajuda infancia Setembre 2012Dossier programa ajuda infancia Setembre 2012
Dossier programa ajuda infancia Setembre 2012Creu Roja a Catalunya
 

Destaque (20)

Khoa may
Khoa mayKhoa may
Khoa may
 
全景家庭影院(世界各地)
全景家庭影院(世界各地)全景家庭影院(世界各地)
全景家庭影院(世界各地)
 
Monitor
MonitorMonitor
Monitor
 
Aritmetica de baldor
Aritmetica de baldorAritmetica de baldor
Aritmetica de baldor
 
AKTIO: Presentación institucional
AKTIO: Presentación institucionalAKTIO: Presentación institucional
AKTIO: Presentación institucional
 
Cursos avances-tecnologicos-motoniveladora-serie-m-caterpillar
Cursos avances-tecnologicos-motoniveladora-serie-m-caterpillarCursos avances-tecnologicos-motoniveladora-serie-m-caterpillar
Cursos avances-tecnologicos-motoniveladora-serie-m-caterpillar
 
cristian david
cristian davidcristian david
cristian david
 
Paolita l.d.s
Paolita l.d.sPaolita l.d.s
Paolita l.d.s
 
Qa chemistry
Qa chemistryQa chemistry
Qa chemistry
 
Osc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamagutiOsc2012 tokyo fall_home_san_nayamaguti
Osc2012 tokyo fall_home_san_nayamaguti
 
Compositcrap
CompositcrapCompositcrap
Compositcrap
 
Projeto Censo Rotaractiano 2013 2015
Projeto Censo Rotaractiano 2013 2015Projeto Censo Rotaractiano 2013 2015
Projeto Censo Rotaractiano 2013 2015
 
New microsoft office power point presentation (4)
New microsoft office power point presentation (4)New microsoft office power point presentation (4)
New microsoft office power point presentation (4)
 
Www.elecachat.fr samsung-series-9.html
Www.elecachat.fr samsung-series-9.htmlWww.elecachat.fr samsung-series-9.html
Www.elecachat.fr samsung-series-9.html
 
Como tener una cuentaa
Como tener una cuentaaComo tener una cuentaa
Como tener una cuentaa
 
Bgi segundo taller
Bgi segundo tallerBgi segundo taller
Bgi segundo taller
 
Identidad corporativa congreso tomate 09 def
Identidad corporativa congreso tomate 09 defIdentidad corporativa congreso tomate 09 def
Identidad corporativa congreso tomate 09 def
 
Diapositivas correo institucional aula virtual
Diapositivas correo institucional aula virtualDiapositivas correo institucional aula virtual
Diapositivas correo institucional aula virtual
 
Copycat 비교 박상조
Copycat 비교 박상조Copycat 비교 박상조
Copycat 비교 박상조
 
Dossier programa ajuda infancia Setembre 2012
Dossier programa ajuda infancia Setembre 2012Dossier programa ajuda infancia Setembre 2012
Dossier programa ajuda infancia Setembre 2012
 

Semelhante a Por que documentar seu código

Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 RefactoringWildtech
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Motalucianacmota
 
Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06thomasdacosta
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Adriano Teixeira de Souza
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência JavaMario Jorge Pereira
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webAlvaro Oliveira
 
Aula 5 - Programação 1
Aula 5 - Programação 1Aula 5 - Programação 1
Aula 5 - Programação 1Isaac Barros
 
Java Desktop
Java DesktopJava Desktop
Java Desktopciceroclc
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Pythonguestac3de
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CAdriano Teixeira de Souza
 

Semelhante a Por que documentar seu código (20)

Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Php Conf08 Refactoring
Php Conf08 RefactoringPhp Conf08 Refactoring
Php Conf08 Refactoring
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Python para Programadores
Python para ProgramadoresPython para Programadores
Python para Programadores
 
Linguagem C clecioamerico
Linguagem C clecioamericoLinguagem C clecioamerico
Linguagem C clecioamerico
 
Clean Code
Clean CodeClean Code
Clean Code
 
Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06Algoritmos e Técnicas de Programação - Aula 06
Algoritmos e Técnicas de Programação - Aula 06
 
Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1Estrutura de Dados - Características da linguagem C - 1
Estrutura de Dados - Características da linguagem C - 1
 
FC-Logic
FC-LogicFC-Logic
FC-Logic
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência Java
 
Cherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações webCherrypy - um framework para desenvolvimento rápido de aplicações web
Cherrypy - um framework para desenvolvimento rápido de aplicações web
 
Aula 5 - Programação 1
Aula 5 - Programação 1Aula 5 - Programação 1
Aula 5 - Programação 1
 
Java Desktop
Java DesktopJava Desktop
Java Desktop
 
Minicurso Python
Minicurso PythonMinicurso Python
Minicurso Python
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Aula02
Aula02Aula02
Aula02
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 

Por que documentar seu código

  • 1. Por que você deveria Documentar seu código? Lennon Manchester @leManchester
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 11.
  • 12. Documentação? É o conjunto de documentos...
  • 13. Documentação? É o conjunto de documentos... Documento? Um documento (do latim documentum derivado de docere “ensinar, demonstrar”) é qualquer meio, sobretudo gráfico, que comprove a existência de um fato, a exatidão ou a verdade de uma afirmação etc. No meio jurídico, documentos são frequentemente sinônimos de atos, cartas ou escritos que carregam um valor probatório.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 23. O que é um Legado?
  • 24. Porque ninguém gosta de trabalhar com Código Legado?
  • 28. CAOS?
  • 29. .... Ahh tá, Não tem Documentação?
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36. Métodos Ágeis
  • 37.
  • 38.
  • 39.
  • 40.
  • 41. Indivíduos e interação entre eles mais que processos e ferramentas Software em funcionamento e nunca mais terar que documentar seu codigo Colaboração com o cliente mais que negociação de contratos Responder a mudanças mais que seguir um plano
  • 42.
  • 43. Então vamos para o interessante....
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 58.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 72. Communication Programs are read much more often than written and therefore should communicate clearly their intent. Code is primarily means of communication. (For a typical enterprise system, a lot of code will be modified by many programmers over 5 – 15 years and they’ll all need to understand it.)
  • 73.
  • 75. ELEMENTOS Boa Doc de uma - Descreva o comportamento (método ou classe).
  • 76. ELEMENTOS Boa Doc de uma - Descreva o comportamento (método ou classe). - Evite a primeira pessoa ('We', 'I', 'You' is okay?!).
  • 77. ELEMENTOS Boa Doc de uma - Descreva o comportamento (método ou classe). - Evite a primeira pessoa ('We', 'I', 'You' is okay?!). - A primeira linha deve ser um sumário do método/classe.
  • 78. ELEMENTOS Boa Doc de uma - Descreva o comportamento (método ou classe). - Evite a primeira pessoa ('We', 'I', 'You' is okay?!). - A primeira linha deve ser um sumário do método/classe. - Deixe de fora detalhes de implementação a não ser que eles afetem o seu uso.
  • 79. ELEMENTOS Boa Doc de uma - Descreva o comportamento (método ou classe). - Evite a primeira pessoa ('We', 'I', 'You' is okay?!). - A primeira linha deve ser um sumário do método/classe. - Deixe de fora detalhes de implementação a não ser que eles afetem o seu uso. - Use notas (@note) para dizer algo para que seu usuário deve saber.
  • 80. ELEMENTOS Boa Doc de uma - Descreva o comportamento (método ou classe). - Evite a primeira pessoa ('We', 'I', 'You' is okay?!). - A primeira linha deve ser um sumário do método/classe. - Deixe de fora detalhes de implementação a não ser que eles afetem o seu uso. - Use notas (@note) para dizer algo para que seu usuário deve saber. - Referencias (classes, methods, URLs, @see).
  • 81. ELEMENTOS Boa Doc de uma - Descreva o comportamento (método ou classe). - Evite a primeira pessoa ('We', 'I', 'You' is okay?!). - A primeira linha deve ser um sumário do método/classe. - Deixe de fora detalhes de implementação a não ser que eles afetem o seu uso. - Use notas (@note) para dizer algo para que seu usuário deve saber. - Referencias (classes, methods, URLs, @see). - Lista de parametros e os seus retornos e tipos.
  • 82.
  • 83. O Nome história inteira.... da variável NÃO TE CONTA A
  • 84. O Nome história inteira.... da variável NÃO TE CONTA A def find(name)
  • 85. O Nome história inteira.... da variável NÃO TE CONTA A def find(name) String? “John”
  • 86. O Nome história inteira.... da variável NÃO TE CONTA A def find(name) String? “John” Symbol? :John
  • 87. O Nome história inteira.... da variável NÃO TE CONTA A def find(name) String? “John” Symbol? :John Hash? { :first => “John”, :last => “Lennon” }
  • 89. Write Docs Write a Validate Code for a Method Method with Docs
  • 90. Write Docs Write a Validate Code for a Method Method with Docs Write a Write Docs Validate Code Method for a Method with Docs
  • 91.
  • 92. class OS # Returns a list of String and # numbers displaying CPU information # of an OS: the CPU type, architecture, vendor # clock speed (as integer), temperature (as # integer) and voltage (as integer) def processor_info [ cpu_type, cpu_arch, cpu_vendor, cpu_clock, cpu_temp, cpu_voltage ] end end
  • 93. Yard http://yardoc.org/
  • 94. Yard http://yardoc.org/ class OS # @return [Array(String, String, String, Integer, Integer, Integer)] # CPU type, architecture, vendor, clock speed, temp and voltage of an OS def processor_info [ cpu_type, cpu_arch, cpu_vendor, cpu_clock, cpu_temp, cpu_voltage ] end end
  • 95. class OS def processor_info { :cpu_type => cpu_type, :cpu_arch => cpu_arch, :cpu_vendor => cpu_vendor, :cpu_clock => cpu_clock, :cpu_temp => cpu_temp, :cpu_voltage => cpu_voltage } end end
  • 96. Hash? class OS def processor_info { :cpu_type => cpu_type, :cpu_arch => cpu_arch, :cpu_vendor => cpu_vendor, :cpu_clock => cpu_clock, :cpu_temp => cpu_temp, :cpu_voltage => cpu_voltage } end end
  • 97. class OS # @return [Hash{Symbol=>[String, Integer]}] # processor info filled into fields :cpu_type, :cpu_arch, :cpu_vendor, # :cpu_clock (Integer), :cpu_temp (Integer), :cpu_voltage (Integer) # representing proc values of a CPU def processor_info { :cpu_type => cpu_type, :cpu_arch => cpu_arch, :cpu_vendor => cpu_vendor, :cpu_clock => cpu_clock, :cpu_temp => cpu_temp, :cpu_voltage => cpu_voltage } end end
  • 98. STOP
  • 99.
  • 100. class ProcessorInfo # @return [String] CPU type (AMD, Intel, ...) attr_accessor :cpu_type # @return [String] CPU Architeture (x86, ARM) attr_accessor :cpu_arch # @return [String] CPU speed in hz (3.4.ghz = 3400) attr_accessor :cpu_clock end class OS # @return [ProcessorInfo] proc info of current OS def processor_info ProcessorInfo.new.tap do |p| p.cpu_type, p.cpu_arch, p.cpu_ clock = cpu_type, cpu_arch, cpu_clock end end end
  • 101. Por que você deveria Documentar seu Código?
  • 102.
  • 103. Does it make sense?
  • 104. References Loren Segal - Just Say No To :nodoc: and Document Your Code! http://www.youtube.com/watch?v=tCw7CpRvYOE Maurício Aniche at QCon SP (2012): Métodos ágeis: o que é folclore e o que é real? Krzysztof, Stig, and Jakub - Programming like Kent Beck http://blog.iterate.no/2012/06/20/programming-like-kent-beck/ Tom Preston-Werner http://tom.preston-werner.com/2010/08/23/readme-driven-development.html Images collected from Google Images®
  • 105. Obrigado Perguntas? Lennon Manchester @leManchester

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. Bom a ideia surgiu numa conversa com o Leronardo, como o codigo esta crescendo mto rapido com o sys2, mta complexidade sendo aplicada nos projetos, pressão de tempo no desenvolvimento, sem !! Possivel Legado 2.0\n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n
  83. \n
  84. \n
  85. \n
  86. \n
  87. \n
  88. \n
  89. \n
  90. \n
  91. \n
  92. \n
  93. \n
  94. \n
  95. \n
  96. \n
  97. \n
  98. \n
  99. \n
  100. \n
  101. \n
  102. \n
  103. \n
  104. \n