Jump to content

Ganhe $$$ escrevendo tutoriais para nós!


Foto

Dicas para um código mais limpo e melhor





  • Faça login para responder
26 respostas neste tópico

#1 adelgado

adelgado
  • Participante
  • 723 mensagens

Publicado 09 October 2005 - 10:22 PM

  Ao ver alguns códigos postados aqui no fórum, ou em outros locais da Internet, sempre acho códigos que não são tão complexos assim, porém a forma com a qual o programador os fez torna quase impossível para alguém que não tenha acompanhado seu desenvolvimento entender de cara. Como isso ocorre principalmente com iniciantes, resolvi postar um tópico com algumas dicas que talvez ajudem outras pessoas a fazer códigos mais 'limpos' e melhores.

Posted Image  Agrupe variáveis:
 Não sei em outras linguagens, mas pelo menos em pascal, há uma forma muito boa de agrupar variáveis. Muitas vezes já vi códigos como
 
VarA: integer;
VarB: string;
varC: integer;
Tag: string;
Buffer: integer;
 
Isso é uma coisa horrível, pois além de vários tipos estarem embaraçados, estão ocupando um espaço desnecessário. Isso pode ser escrito dessa forma:
 
VarA, VarC, Buffer: integer;
VarB, Tag: string;
 
 Posted Image Dê nomes óbvios à variáveis:
Continuando com as variáveis do exemplo anterior, podemos ainda melhorar isso. Não seria mais fácil nomear elas pela função delas? Assim, alguém que não está familiarizado com o código poderia compreendê-lo melhor:
Em vez de:
 

VarA, VarC, Buffer: integer;
VarB, Tag: string;
 
Coloque algo como:
 
Idade, CEP, Buffer: integer;
Encriptado, Tag: string;
 
 Posted Image Coloque o tipo das variáveis em seu nome:
Para alguém que não conhece muito bem o código, é mais fácil cuidar das variáveis sabendo o tipo delas; então, em vez de


Idade, CEP, Buffer: integer;
Encriptado, Tag: string;
que tal usar

IntIdade, IntCEP, Buffer: integer;
StrEncriptado, Tag: string;
Algumas vezes, isso pode até parecer inútil, pois é óbvio que uma variável chamada Sobrenome não vai ser um integer. Mas mesmo assim isso vale, pois imagine se for um programador Finlandês? Ele não sabe o que Sobrenome quer dizer...
Isso também serve, nas linguagens orientadas à objeto, paras os objetos; ex. btnSave em vez de Salva
 
 Posted Image Buffer e Tag:
Buffer e Tag são nomes de variáveis 'faz-tudo', que geralmente são usadas para guardar qualquer tipo de dado; resultado de operações matemáticas ainda não completas, por exemplo... Mas para isso ficar ainda mais organizado, utilize esse sistema:
Buffer é texto, e Tag é número.
Assim, de:

IntIdade, IntCEP, Buffer: integer;
StrEncriptado, Tag: string;
Iríamos para:

IntIdade, IntCEP, Tag: integer;
StrEncriptado, Buffer: string;
 
 Posted Image Torne o código sempre o mais internacional possível:
Eu falei antes nesse tópico sobre um programador Finlandês lendo seu código. Para ele, variáveis em Português provavelmente seriam um problema. Tente colocar nome de variáveis, funções, propriedades e componentes sempre em Inglês, para facilitar o entendimento por um estrangeiro... Ficaria assim:

IntAge, IntZIP, Buffer: integer;
StrEncrypted, Tag: string;
 
 Posted Image Use hierarquia de comandos:
Cansei de ver códigos como
program Programa;
uses
crt;
var
Tag: integer;
begin
Tag:=TimeToStr(Now);
writeln(Tag);
end.
 
Mesmo que esse código seja perfeitamente inteligível pela máquina, falha no quesito humano. Com alguns enters e espaços, podemos melhorar sensivelmente o código, fazendo ele ficar assim:

program Programa;
 
uses
 crt;
 
var
 Tag: integer;
 
begin
 Tag := TimeToStr(Now);
 writeln(Tag);
end.
 
Isso, em Pascal, pode não significar mada... Mas tenho certeza que um programador HTML preferiria
 
<html>
 <head>
  <title>
 Pudim - www.pudim.com.br
</title>
 </head>
 <body>
  <center>
<img src="pudim.jpg">
<br>
 <font size="5">
</font>
  </center>
 </body>
</html>
 
do que

 
<html><head>
<title>Pudim - www.pudim.com.br</title>
</head><body><center>
  <img src="pudim.jpg"><br>
  <font size="5">www.pudim.com.br</center></body>
</html>

 
 Posted ImageUse comentários:
Fazer comentários é algo que todo programador deveria fazer. Para outra pessoa, ou para você mesmo, vendo o código depois de ter ficado muito tempo sem mexer com ele, comentários podem ajudar muito. Para fazer comentários, use:
Pascal/Delphi: // Comentário
Pascal/Delphi: (* Comentário *) ou { Comentário }
C/C++/C#: /* Comentário */
HTML, XML, SGML, MathML (A maioria dos ML): <!-- Comentário -->
LOGO: ;Comentário
DOS Bash (Arquivos *.bat): rem Comentário
Contribuição do colega peczenyj: 
PERL/AWL/PHP/RUBY: #Comentário
Alguns Unix Shells: :Comentário
RUBY: =begin Comentário =end
Basic e variantes: 'Comentário
SQL/LUA: --Comentário
SQL: /* Comentário */
LUA: [[ Comentário ]] --Confirmem por favor
FORTRAN: c Comentário
FORTRAN: * Comentário
VHDL/LISP: ;Comentário
FOXPRO: * Comentário * ou * Comentário & 
 
 Posted ImageUse DOCTYPE
DOCTYPE é uma tag das linguagens HTML e XHTML que ajuda o navegador, ou qualquer que seja o interpretador, a saber o tipo de codificação que ele está lendo, agilizando assim o processo de carregar a página.
É algo mais ou menos parecido com isso:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
É sempre a primeira Tag do código. Para saber mais, entre em http://www.htmlhelp.com/tools/validator/doctype.html
 
 Posted ImageVerifique seu código
Essa é para os desenvolvedores Web: tente sempre fazer um código válido perante a W3C, www.w3.org, que é a instituição que 'regulamenta' a maioria das linguagens Web. Isso vai salvar seu tempo, pois o código vai ficar mais simples, o tempo do usuário, pois o código vai ficar mais rápido, o tempo do cara que quiser pegar uma função do seu código, pois ele vai ficar mais legível, enfim...  ajuda todo mundo.
 
 Posted ImageNão proteja seu código
Em programação de Aplicativos, proteger o código é uma necessidade, pois você estará perdendo dinheiro caso alguém resolver vender seu software. Mas é besteira criptografar o código de uma página da Web, afinal, de dois a uma, se você não quer que roubem o conteúdo, não adianta, pois ele vai copiar o código encriptado e vai ficar na mesma. Além disso, o código vai ficar muito mais lento de ser processado, pois vai ter que descriptografar, e muito mais lento de ser baixado, pois é óbvio que
 
<html>
 <body>
  <p>Teste de Cripto</p>
 </body>
</html>
 
é mais leve que
 
<HTML> <HEAD> <SCRIPT LANGUAGE="Javascript"> var Words =" %3Chtml%3E%0D%0A%20%3Cbody%3E%0D%0A%20%20%3Cp%3ETeste%20de%20Cripto%3C/p%3E%0D%0A%20%3C/body%3E%0D%0A%3C/html%3E" function SetNewWords() { var NewWords; NewWords = unescape(Words); document.write(NewWords); } SetNewWords(); </SCRIPT> </HEAD> <BODY> </BODY> </HTML>
 
mesmo que no final dê no mesmo.
 
 Posted ImageEscrevaAssim
Para nomear variáveis, ou procedures, ou functions, ou objetos, ou de fato qualquer coisa, sempre EscrevaAssim. Motivo: simples; é mais fácil entender "EssaEUmNomeGrande" do que "ESSEEUMNOMEGRANDE" ou "esseeumnomegrande".
 
Espero ter ajudado com essa pequena contribuição. Vou sempre ir postando outras dicas, assim que eu as pensar, ou assim que o povo falar elas, para tornar os códigos da galera cada vez mais 'bonitos'.




#2 brunoloko2

brunoloko2
  • Participante
  • 180 mensagens

Publicado 10 October 2005 - 12:57 AM

Boas dicas cara...merecia ser pinado não? Posted Image Posted Image Posted Image Posted Image Posted Image

#3 peczenyj

peczenyj
  • Participante
  • 433 mensagens

Publicado 10 October 2005 - 02:19 AM

Sobre comentários:

<!-- Este tipo de Comentário é suportado tanto por HTML quanto por XML -->

// C, C++, Java, JavaScript e PHP suportam
// tanto este tipo de comentario até o fim da linha
// C# também suporta ?
/* quanto este comentario
delimitado */

/* Alias este tipo de comentario fica bonito
* Mas se tiver um /* cara desses no meio */
* Pode complicar...
*/

// Existe uma tal de linguagem D, mas eu acho que é outra gambiarra...

# Este tipo de comentario é suportado pelo PERL e AWL
# Pelo PHP e por varios Unix Shells (Bash, KSH)

:alias em shell da para fazer uma coisa assim
:mas isso não é muito usado..

cat </dev/null
este tipo de coisa, em SHELL, nunca sera impresso na tela
até pode ser interpretado como um "comentario"
mas é uma gambiarra danada
EOF

# O RUBY tem este tipo de comentario e
=begin
comentarios multiplos
em varias linhas
=end

'Este tipo de comentario é comum no basic e suas variantes
'como QBasic, SQABasic, VisualBasic
REM o ' substitui o comando REM

-- Este é um comentário SQL padrão, que também suporta /**/
-- Também encontramos este comentario na linguagem LUA
-- que parece que suporta algo do tipo [[ comentario ]]

c Em FORTRAN a letra ‘c’ ou o caractere ‘*’ na primeira coluna indica
c que toda a linha é um comentário. Alguns compiladores aceitam o uso
* de qualquer caractere diferente de números para iniciar a linha de
* comentário.


* O FOXPRO também usa o * como comentario até
* o fim da linha
& ou delimitado por estes caras &

% Este tipo de comentario é encontrado em fontes de tex e LaTeX
% Também é comentario em PostScript, exceto o %! inicial

; este comentario você encontra em LISP
; (LISP (é uma linguagem((que)(adora))(parêntesis)))
; VHDL também usa ponto-e-vírgula

Não me recordo de nenhum outro tipo de comentario... com certeza deve ter mais coisas bizarras por ai, como ZIM, ABAP, COBOL...

#4 flaviotomazio

flaviotomazio
  • Participante
  • 654 mensagens

Publicado 10 October 2005 - 09:49 AM

Pino!

#5 adelgado

adelgado
  • Participante
  • 723 mensagens

Publicado 10 October 2005 - 07:27 PM

Adicionada a contribuição do colega peczenyj .

#6 flaviotomazio

flaviotomazio
  • Participante
  • 654 mensagens

Publicado 11 October 2005 - 09:41 AM

Vou dar minha contribuição, um texto que fiz baseado no site Xispê

Extreme Programming (XP)

Para muitos programadores o Extreme Programming(XP) pode representar a organização no desenvolvimento de projetos pequenos até projetos de porte médio. E até a uma interface gráfica mais agradável e fácil de usar para usuário final.
o Windows XP é um método criado por Kent Beck e que propõe que o sistema seja desenvolvido com a maior SIMPLICIDADE possível no código fonte e na aparência, que o sistema siga PADRÕES no desenvolvimento dos códigos, que os desenvolvedores INFORMEM ao cliente o que é possível ou não de implementar no sistema ou se irá haver atraso para a entrega do sistema e o porquê disso. Descobrir os problemas do sistema o mais rápido possível para que possa ser resolvido a tempo.


Fonte www.xispe.com.br (XisPê)

#7 adelgado

adelgado
  • Participante
  • 723 mensagens

Publicado 12 October 2005 - 09:32 PM

Atualizado! Duas novas dicas (12/10/05).


E vocês, o que estão achando? Será que não pensam em mais nada que possa ajudar a ''limpar'' o código dos colegas, iniciantes ou não?

 

Mais uma vez obrigado pela contribuição do colega peczenyj, no item dos comentários.

#8 peczenyj

peczenyj
  • Participante
  • 433 mensagens

Publicado 12 October 2005 - 10:08 PM

eu acho que foi o meu momento mais nerd deste mês... 'http://www.babooforum.com.br/idealbb/images/smilies/12.gif

#9 adelgado

adelgado
  • Participante
  • 723 mensagens

Publicado 13 October 2005 - 04:22 PM

Data: 12/10/2005
Autor: peczenyj

eu acho que foi o meu momento mais nerd deste mês...

Hehê, que nada.. foi muito bom, seria legal se você continuasse com outras contribuições assim...

#10 adelgado

adelgado
  • Participante
  • 723 mensagens

Publicado 19 October 2005 - 07:53 PM

Só dando um up, para quem ainda não viu...






Tópicos Relacionados Collapse





Ganhe $$$ escrevendo tutoriais para nós!