Boas práticas de programação

Desenvolver um script ou um programa requer três requisitos básicos: 1) Organização; 2) Conhecimento da linguagem; e 3) Praticidade. Esses três requisitos e suas subdivisões constroem um ambiente de trabalho mais didático e prático. Nesta postagem vamos discutir boas práticas de programação.

Você já se deparou em um momento onde necessita daquele script que você um dia fez, mas não sabe onde ele está? Não sabe nem por onde começar a buscá-lo? Se sente perdido em tantos comandos “cd” e “ls -lat” que executa? Bem, se isso já aconteceu com você, fique atento logo abaixo.

Pensando no primeiro item das boas práticas de programação, sendo a mais valiosa, é a organização. Organização é uma palavra ampla, que pode ser empregada em afazeres do cotidiano tanto para programação. O fato é saber organizar seu diretório e seu programa/script, para assim, no futuro, saber o que e onde procurar. As dicas para uma melhor organização são:

  1. Coloque nomes simples e fáceis nos diretórios, scripts e programas.

Sim, simples e fáceis. Quando você receber um dado de alguma pesquisa ou for realizar alguma análise com algum programa, crie pastas! Por exemplo: “dados”, “blast”, “parser_blast.pl”,”executa_qiime.c”, “entre outros. Estruturação de pastas é importante. Aliás, use o comando tree e verifique como está estruturada sua pasta.

  1. Comentários oportunos

Assim como eu, você já deve ter se perguntado: Para que eu usei esse programa mesmo? Sim, essa pergunta sempre aparece. De fato precisamos colocar comentários ao longo do script e/ou programa para sabermos sua utilidade, e não deixe de pensar no futuro, faça um script que seja reutilizável.

Os comentários podem vir logo no cabeçalho do programa, algo como:

“#Script para executar automaticamente meus programas”

E lembretes ao longo do código:

“#Termina de executar o parser”
“#Lembrar de tirar o exit”

Quanto mais comentários melhor, mas claro, que eles sejam oportunos, para assim, o código permanecer acessível futuramente por você ou outra pessoa que for utilizá-lo.

  1. Linha de comando

Em um passado, ou um futuro próximo, já passei (e você leitor também) pela seguinte situação:

– Chefe: “Fulano, me passa o pipeline de análise X?”

– Doutorando: “Claro chefe, um minuto”

São vários “ls”, “history”, “Ctrl+r”, e então, você não acha as linhas de código que necessita. Para não passar por situações como essa, sempre crie um arquivo “linha_de_comando_.txt” ou “CMD”, e nele guarde toda a rotina utilizada durante o processo de execução de seu pipeline. Se você quer ganhar tempo, sempre execute:

echo “linha_executada” >> CMD

O comando ‘echo’ juntamente com a operação ‘>>’ salvam na última linha do arquivo CMD a “linha_executada”, assim, basta abrir o arquivo CMD e encontrará suas linhas de código do seu pipeline.

Vamos ao segundo item do nosso guia de Boas Práticas de Programação. Conhecer e saber estruturar a linguagem de programação, seja ela qual for, tais como C, Perl, Python ou C++, a estruturação e conhecimento sobre elas fazem você se diferenciar pela limpeza do código e praticidade (item 3!). E segurem as dicas abaixo:

  1. Indentação

Indentar um código é como se fosse preparar uma receita de bolo: primeiro isso, depois aquilo, para no final termos algo utilizável. Sempre que abrir um laço de for ou um while, até mesmo uma nova função, indente o código para que  se organize em sequencias de fatos e variáveis.

Existe uma diferença em programar isto:

for(i=0;i<n;i++) {

for(j=0;j<m<j++){

valor=i*j;

matriz[i][j]=valor;

printf(“matriz[%d][%d]=%d”,I,j,matriz[i][j]);

}

}

 

Para isto:

 for(i=0;i&lt;n;i++) {  
  for(j=0;j&lt;m&lt;j++){  
   valor=i*j;  
   matriz[i][j]=valor;  
   printf(“matriz[%d][%d]=%d”,i,j,matriz[i][j]);  
  }  
 }  

A indentação sugere limpeza se código e proporciona uma melhor visualização. E além do mais, você programador Python, essa é a primeira e mais importante regra para você.

 

  1. Sub-rotinas e pacotes

 

Ao nos depararmos com um código muito grande e extenso, talvez seja bom repensar em utilizar uma sub-rotina no seu código (uma função), que pode ser utilizada em outras partes do código, ou em pacotes já prontos, como, por exemplo, o BioPerl.

Se você já visualizou o código de um programa open source, irá ver que sempre existem rotinas que são utilizadas mais de uma vez na execução do código. Essa prática é importante para deixar o código mais limpo e fácil de ser entendido. Lembrando-se da primeira regra de Boas Práticas de Programação, coloque nomes favoráveis nessas funções ao longo do código. Então, se você for executar mais de uma vez alguma rotina ao longo do código, repense se não vale a pena criar uma função auxiliar.

Pensando nos pacotes, não fique estressado em como realizar tal tarefa árdua, pense que sempre alguém ja teve o mesmo problema que você (caso contrário, faça um blog e poste seu problema). Existem pacotes, como, por exemplo, o BioPerl que possui rotinas de leitura de arquivos de saída do Blast, arquivos .fasta, entre outros. Eu, como programa muito em Perl e R, sempre utilizo os bancos CPAN e CRAN para procurar pacotes que sejam úteis, além de poupar um baita tempo. Mas não se esqueça: nunca plagie! Se fez uso, cite a fonte quando necessário!

  1. Argumentos

O uso de argumentos sempre facilita na execução e reutilização de scripts.  Ao programar um script sempre pense em sua reutilização, sendo assim, a criação de argumentos pode ser importante para que, independente do momento, você não precisará digitar mil vezes a mesma linha de comando para arquivos diferentes.

Já teve que executar um Blast para dezenas de arquivos, mas se viu na necessidade de realizá-los em sequência? Sim, ficar trocando os arquivos de entrada é um baita trabalho. Para sanar essa questão, faça um script que execute o Blast para todos os argumentos que você passar ao script. Seria assim:

perl executa_blast.pl *.fasta

Olhando a fundo o script executa_blast.pl

“ ……..


foreach my $file (@ARGV){
   system(“blastall –p blastn –i $file …..”);
}

…….. ”
Assim, facilita a execução de tantos arquivos que você necessite. Esse é um dos casos de muitos onde a utilização de argumentos demonstra uma alta persuasão em alguma determinada linguagem de programação.

Vamos ao último tópico em questão no nosso post sobre Boas Práticas de Programação. Falar de Praticidade não somente está envolvido todos os outros tópicos citados acima, mas também em qual linguagem você executa seus códigos. Discutir qual a melhor linguagem de programação atual requer um post somente para essa discussão, que virá logo não muito menos!

Uma das grandes diferenças de qual linguagem utilizar é a sua robustez e praticidade. Quão robusta é certa linguagem? Ela executa de forma correta o que desejo?  Certas perguntas fazem você se utilizar de linguagens diferentes de programação.

Saber lidar com a praticidade proposta por cada linguagem faz um engajamento diferente em um programa. Rotinas simples são melhores do que carregar pacotes. Uso de memória excessivo em execuções grandes. Estes fatos sugerem sempre a utilização de linguagens diferentes.

O diferencial de programar é saber a utilidade de cada função na linguagem escolhida, é desvendar o que ela tem de melhor e saber sempre decidir se o problema em suas mãos pode ser sanado ou, necessita ser, de modo rápido e robusto.

 

Bem pessoal, espero que tenham gostado da postagem e dúvidas podem nos contatar! Não se esqueça: se for se aventurar pelo mundo da programação (e espero que sim), se utilize de boas práticas!

Um abraço.

 

Challenge da semana:

“ Sejam x e y números inteiros, quantas soluções possuem a equação |x| + 2.|y| = 100 ?  “

Adicionar aos favoritos o Link permanente.

Sobre Lucas Miguel

Bacharel em Matemática Aplicada e Computacional, mestre em Ciência da Computação pela UNICAMP, e doutor em Bioinformática pela mesma universidade, atualmente é pós-doutorando em Bioinformática no CEPID/CCES - Centro de Engenharia e Ciências Computacionais. Possui como linha de pesquisa integração de ômicas e simulação metabólica.

2 respostas para Boas práticas de programação

  1. Pingback:Boas práticas de programação - Blogs Científicos - UNICAMP

  2. Ramon diz:

    Muito bom artigo. É importante já no início da carreira o aluno começar a programar seguindo esses preciosos conselhos.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *