SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Um espaço aberto para dialogar, compartilhar conhecimentos e experiências.
10        Boas
          Práticas de
          Programação

Carlos Eduardo A. Schults
@carlosschults
carlos.schults@gmail.com
0. Indentação Correta
#função original
def f( x )
   # indentação com tab de 4 espaços
   Math.log( x ) - x + 2
End


#função modificada
def g( x )
   Math::E**( x - 2 )
end
1. Nomes consistentes
<?php
    $n = array( 10, 10, 10, 10 );
    $sn = 0;
    $q = count( $notas );

     for ( $contadorDoFor = 0; $contadorDoFor < $q; $contadorDoFor++ ) {
          $sn += $n[$contadorDoFor];
     }

     $m = $sn / $q;

     // ------------------------------------------------------------------------

     $notas = array( 10, 10, 10, 10 );
     $somaNotas = 0;
     $qtdElementos = count( $notas );

     for ( $i = 0; $i < $qtdElementos; $i++ ) {
          $somaNotas += $notas[$i];
     }

     $media = $somaNotas / $qtdElementos;
?>
2. Comentar é bom...
<?php
    // função para calcular o fatorial de um número
    function fatorial( $numero )
    {
         // fatorial de 0, por definição, é 1
         if ( 0 == $numero ) {
               return 1;
         }

         /**
         * fatorial de um número é o próprio número, multiplicado pelo fatorial
         * do número anterior
         */
         return $numero * fatorial( $numero - 1 );
     }
?>
3. ...mas não exagere :P
# se valor da variável idade for maior ou igual a 18
if idade >= 18
     # atribui 'Vai trabalhar vagabundo' à variável idade
     mensagem = 'Vai trabalhar vagabundo'
else # se idade for menor que 18
     # atribui 'Vai estudar vagabundo' à variável idade
     mensagem = 'Vai estudar vagabundo'
end

# imprime na tela a variável mensagem
puts mensagem
4. Siga um padrão de codificação
5. Não Se Repita (DRY)
6. Você não vai precisar disso (YAGNI)
           You Aren't Gonna Need It
7. Evite Muitos Níveis de Indentação
7. Evite Muitos Níveis de Indentação
8. Evite Linhas Muito Longas
8. Evite Linhas Muito Longas

Procure limitar em 80 (ou no máximo 100) caracteres
8. Evite Linhas Muito Longas

Procure limitar em 80 (ou no máximo 100) caracteres
9. Evite Funções Que Contam Em Testes
                de Laço
“ Sempre programe como se o cara que vai
acabar dando manutenção no seu código
fosse um psicopata violento que sabe onde
você mora.”
Martin Golding
http://blog.thiagobelem.net/php-as-10-melhores-praticas-pra-um-iniciante/

http://blog.thiagobelem.net/melhores-praticas-para-deixar-seu-codigo-legivel/

http://net.tutsplus.com/tutorials/php/why-youre-a-bad-php-
programmer/

http://net.tutsplus.com/tutorials/html-css-techniques/top-15-best-
practices-for-writing-super-readable-code/

http://net.tutsplus.com/tutorials/php/30-php-best-practices-for-beginners/

http://pt.wikipedia.org/wiki/Don't_repeat_yourself

http://pt.wikipedia.org/wiki/YAGNI

Mais conteúdo relacionado

Mais procurados

Princípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio TorresPrincípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio TorresTchelinux
 
Refatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoRefatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoJuciellen Cabrera
 
Algoritmos e Programação: Conceito e comportamento de variável. Operadores. A...
Algoritmos e Programação: Conceito e comportamento de variável. Operadores. A...Algoritmos e Programação: Conceito e comportamento de variável. Operadores. A...
Algoritmos e Programação: Conceito e comportamento de variável. Operadores. A...Alex Camargo
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraDextra
 
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
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)Mario Sergio
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5Diego Pacheco
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareFelipe
 
Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Mario Sergio
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2PeslPinguim
 
Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Luís Cobucci
 
04 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.004 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.0César Augusto Pessôa
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...Manuel Menezes de Sequeira
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 

Mais procurados (20)

Princípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio TorresPrincípios de projeto e boas práticas de programação em Java - Márcio Torres
Princípios de projeto e boas práticas de programação em Java - Márcio Torres
 
Refatoração - aquela caprichada no código
Refatoração - aquela caprichada no códigoRefatoração - aquela caprichada no código
Refatoração - aquela caprichada no código
 
Algoritmos e Programação: Conceito e comportamento de variável. Operadores. A...
Algoritmos e Programação: Conceito e comportamento de variável. Operadores. A...Algoritmos e Programação: Conceito e comportamento de variável. Operadores. A...
Algoritmos e Programação: Conceito e comportamento de variável. Operadores. A...
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 
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
 
Guia rapido java v2
Guia rapido java v2Guia rapido java v2
Guia rapido java v2
 
Java - Primeiros passos
Java - Primeiros passosJava - Primeiros passos
Java - Primeiros passos
 
Curso de Java (Parte 3)
 Curso de Java (Parte 3) Curso de Java (Parte 3)
Curso de Java (Parte 3)
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
Spring framework 2.5
Spring framework 2.5Spring framework 2.5
Spring framework 2.5
 
Código Limpo
Código LimpoCódigo Limpo
Código Limpo
 
Boas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de softwareBoas práticas no desenvolvimento de software
Boas práticas no desenvolvimento de software
 
Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)Introdução a Banco de Dados (Parte 3)
Introdução a Banco de Dados (Parte 3)
 
Lógica de programação
Lógica de programaçãoLógica de programação
Lógica de programação
 
Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2Curso Básico de Java - Aula 2
Curso Básico de Java - Aula 2
 
Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011Removendo o cheiro ruim do seu código - SoLiSC 2011
Removendo o cheiro ruim do seu código - SoLiSC 2011
 
04 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.004 - C# laços de repetição, vetores e matrizes v1.0
04 - C# laços de repetição, vetores e matrizes v1.0
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
Algoritmo 04 - Estruturas de decisão
 Algoritmo 04 - Estruturas de decisão Algoritmo 04 - Estruturas de decisão
Algoritmo 04 - Estruturas de decisão
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 

Destaque

Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosJuliano Atanazio
 
boas praticas
boas praticasboas praticas
boas praticaslcbj
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NETFabiano Roman Beraldi
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Rodrigo Kono
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Robson Ferreira
 
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno RochaiMasters
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de ProgramaçãoPaulo Souza
 
Coding Standards & Best Practices for iOS/C#
Coding Standards & Best Practices for iOS/C#Coding Standards & Best Practices for iOS/C#
Coding Standards & Best Practices for iOS/C#Asim Rais Siddiqui
 
O uso dos porquês
O uso dos porquêsO uso dos porquês
O uso dos porquêsRebeca Kaus
 
4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
4 Tarefa Plano Aula Bullying Claudia Cunha O IgnacioFAETEC - ETESC
 
Viva jovem, venha conhecer!
Viva jovem, venha conhecer!Viva jovem, venha conhecer!
Viva jovem, venha conhecer!Rebeca Kaus
 
Semanal fechada 6 ano
Semanal fechada 6 anoSemanal fechada 6 ano
Semanal fechada 6 anoRebeca Kaus
 
Agile Brazil 2013 - Resumo
Agile Brazil 2013 - ResumoAgile Brazil 2013 - Resumo
Agile Brazil 2013 - ResumoBruno Nardini
 
Introdução aos Servlets e JSPs
Introdução aos Servlets e JSPsIntrodução aos Servlets e JSPs
Introdução aos Servlets e JSPsLuiz Ricardo Silva
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseOziel Moreira Neto
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Tchelinux
 
Repaso semanal aberta 2 6 ano
Repaso semanal aberta 2 6 anoRepaso semanal aberta 2 6 ano
Repaso semanal aberta 2 6 anoRebeca Kaus
 

Destaque (20)

Boas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de DadosBoas praticas em um Projeto de Banco de Dados
Boas praticas em um Projeto de Banco de Dados
 
boas praticas
boas praticasboas praticas
boas praticas
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NET
 
Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)Boas práticas técnica para um código limpo (Clean Code)
Boas práticas técnica para um código limpo (Clean Code)
 
Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1Conceitos e técnicas de programação aula 1
Conceitos e técnicas de programação aula 1
 
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
7Masters jQuery - boas práticas em JavaScriptQuery, com Bruno Rocha
 
Scrum, Agilismo e Boas Práticas
Scrum, Agilismo e Boas PráticasScrum, Agilismo e Boas Práticas
Scrum, Agilismo e Boas Práticas
 
Boas Práticas de Programação
Boas Práticas de ProgramaçãoBoas Práticas de Programação
Boas Práticas de Programação
 
Coding Standards & Best Practices for iOS/C#
Coding Standards & Best Practices for iOS/C#Coding Standards & Best Practices for iOS/C#
Coding Standards & Best Practices for iOS/C#
 
O uso dos porquês
O uso dos porquêsO uso dos porquês
O uso dos porquês
 
4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
4 Tarefa Plano Aula Bullying Claudia Cunha O Ignacio
 
Viva jovem, venha conhecer!
Viva jovem, venha conhecer!Viva jovem, venha conhecer!
Viva jovem, venha conhecer!
 
Semanal fechada 6 ano
Semanal fechada 6 anoSemanal fechada 6 ano
Semanal fechada 6 ano
 
Agile Brazil 2013 - Resumo
Agile Brazil 2013 - ResumoAgile Brazil 2013 - Resumo
Agile Brazil 2013 - Resumo
 
Introdução aos Servlets e JSPs
Introdução aos Servlets e JSPsIntrodução aos Servlets e JSPs
Introdução aos Servlets e JSPs
 
Boa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java EnterpriseBoa Práticas no Desenvolvimento Java Enterprise
Boa Práticas no Desenvolvimento Java Enterprise
 
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
Refatoração e Boas Práticas no Desenvolvimento de Software com a Linguagem Ja...
 
Certificações Java
Certificações JavaCertificações Java
Certificações Java
 
Roteiro 6 ano
Roteiro 6 anoRoteiro 6 ano
Roteiro 6 ano
 
Repaso semanal aberta 2 6 ano
Repaso semanal aberta 2 6 anoRepaso semanal aberta 2 6 ano
Repaso semanal aberta 2 6 ano
 

Semelhante a 10 Boas Práticas de Programação

Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesAlmir Mendes
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando CVinícius Hax
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?Denis Costa
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisCarlos Santos
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3garux
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosRegis Magalhães
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Hugo Maia Vieira
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Vamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDVamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDDomingos Teruel
 
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...André Constantino da Silva
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 

Semelhante a 10 Boas Práticas de Programação (20)

Aula 02 - Introdução ao PHP - Programação Web
Aula 02  - Introdução ao PHP - Programação WebAula 02  - Introdução ao PHP - Programação Web
Aula 02 - Introdução ao PHP - Programação Web
 
Revisao php
Revisao phpRevisao php
Revisao php
 
Aula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQLAula 01 - Curso PHP e MySQL
Aula 01 - Curso PHP e MySQL
 
PHP Day - PHP para iniciantes
PHP Day - PHP para iniciantesPHP Day - PHP para iniciantes
PHP Day - PHP para iniciantes
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
Unidade7 1
Unidade7 1Unidade7 1
Unidade7 1
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
 
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisLabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveis
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
 
Prog web 02-php-primeiros-passos
Prog web 02-php-primeiros-passosProg web 02-php-primeiros-passos
Prog web 02-php-primeiros-passos
 
Php 02 Primeiros Passos
Php 02 Primeiros PassosPhp 02 Primeiros Passos
Php 02 Primeiros Passos
 
Php
PhpPhp
Php
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)
 
Palestra Ruby
Palestra RubyPalestra Ruby
Palestra Ruby
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Vamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDDVamos falar de Clean Code, Refatoração e TDD
Vamos falar de Clean Code, Refatoração e TDD
 
Php
PhpPhp
Php
 
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
Aula 9 - Resultado Operandos Matemáticos, Operadores Aritmeticos, Relacionais...
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 

10 Boas Práticas de Programação