Israel Aéce

Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT

My Links

Blog Stats

Archives

Post Categories

Links

Login

Nomeando Membros

Eu sempre tive (e ainda tenho) uma enorme dificuldade em nomear membros (eventos, métodos, propriedades, etc.), tipos (classes, estruturas, etc.) e, até mesmo, objetos dentro do SQL Server (Tabelas, SPs, etc.). Eu sempre tive a impressão de que o correto seria nomear em ingles, mas isso me trouxe um outro problema: encontrar um termo correspondente em ingles para cada um dos termos, que são muito específicos ao ambiente que trabalho.

A solução para isso? Simples! Passei a nomear tudo em portugues, inclusive mantendo as preposições "de", "do", etc.. Isso está ajudando muito. Além de facilitar para os outros membros da equipe, fica até mais fácil dar manutenção, já que voce le o membro e já sabe exatamente do que se trata ou que ação ele realiza. Essa técnica vai em contradição ao que sempre achei certo, mas me rendi a utilização dos termos em portugues. Abaixo alguns membros que tenho atualmente no projeto em qual estou trabalhando:

namespace ArquivosDeBancos { ... }
public int FatorDeVencimento { get; }
public class Repositorio<T> { ... }
public string RelatoHtml { get; }
public enum TipoDeDocumento { ... }
public Ocorrencia OcorrenciaDeRetorno { get; }

Mas ainda há um cenário onde ainda preciso manter o nome da classe com parte em ingles e parte em portugues. Isso ocorre quando preciso criar uma exceção ou um argumento customizado. Isso porque, por ser uma boa prática, a Microsoft sugere que sufixe as classes que herdam de Exception e EventArgs com [...]Exception e [...]EventArgs, respectivamente. Exemplo:

public class ProdutoNaoEncontradoException { ... }
public class ExtraindoInformacoesEventArgs { ... }

Já estou certo de que a nomenclatura dos membros e tipos em portugues sao a melhor opcao para a minha realidade.

posted on Tuesday, June 19, 2007 6:14 PM

Feedback

# re: Nomeando Membros 6/19/2007 7:35 PM Cleydson

Bem observado Israel!
Essa questão de padrões de codificação sempre gera controvérsias. É gente falando que o certo é isso ou o certo é aquilo que é ridículo fazer isso ou aquilo. Devemos procurar o mais adequado a nossa realidade e o que torna o desenvolvimento de software mais eficiente e eficaz para a nossa equipe/empresa. Por um acaso, onde trabalho atualmente usamos este mesmo padrão que você descreveu, pra nós também este é extremamente eficiente.

# re: Nomeando Membros 6/20/2007 12:34 AM Eduardo Marques da Costa

Oi, Israel! Realmente é complicado escrever software quando não vivemos num país de língua inglesa. Já trabalhei numa empresa que nos obrigava a escrever tudo em inglês, inclusive comentários. Já na empresa atual é necessário escrever tudo em português. Eu tento seguir conforme o "padrão" do projeto mas o que eu mais vejo é um mix: varia de acordo com cada desenvolvedor... Abraço!

# re: Nomeando Membros 6/20/2007 1:33 AM Israel Aece

Boas Eduardo,

Confesso que ainda tenho código deste tipo, por exemplo: GetTitulos()

Mas particularmente não gosto disso.

# re: Nomeando Membros 7/3/2007 7:58 AM Marcos Dell Antonio

Israel,

Excelente post. Sempre me preocupei com este aspecto na hora de escrever código. Isto sem dúvida alguma dá um UP na legibilidade, que no meu ponto de vista é algo tão importante quanto os outros aspectos (desempenho, por ex.).

Uma técnica que costumo adotar ao nomear métodos é sempre utilizar o verbo no infinitivo. Por exemplo:

int CalcularValor()
string RetornarNome()

E por aí vai.

Outro aspecto importante é a utilização de um prefixo ou não na frente dos campos private. Até dias atrás eu sempre utilizei o _. Porém, resolvi abandoná-lo. Programo muito em Delphi e lá o padrão é F como prefixo.

Poderias elaborar um post sobre prefixos utilizados no teu dia-a-dia (classes, forms, aspx, etc). Aliás, é isso que vou fazer agora.

Até +.

# re: Nomeando Membros 7/3/2007 8:04 AM Israel Aece

Ola Marcos,

Eu também utilizo _ para nomear campos private, mas pode ver que o Paulo já reclamou sobre isso: http://weblogs.pontonetpt.com/pjmorgado/posts/14360.aspx :)

Title  
Name  
Url
Box Code
Protected by FormShield
Comments