Padrões de Codificação
Olá pessoal!
Estou escrevendo este post para explicar sobre os padrões de
codificação que iremos utilizar em nosso projeto.
O que é um padrão de codificação?
Um padrão de codificação é basicamente a definição de como
será a formatação do código fonte e como serão nomeadas as variáveis, classes,
funções, propriedades, etc. Existem diversos padrões utilizados no mercado e
nenhum é melhor que o outro. O que importa é que uma vez escolhido um padrão
para um projeto, deve-se segui-lo ate o final, não misturando vários padrões.
Cada linguagem possui um padrão recomendado, é importante
segui-lo para manter o padrão com bibliotecas da linguagem e também para que outros
desenvolvedores da linguagem possam ter familiaridade com seu código caso seja
necessário dar manutenção no mesmo.
Principais padrões de codificação
Pascal Casing
O primeiro caracter de todas as palavras deve estar em letra
maiúscula (UpperCase) e o restante dos caracteres em letra minúscula (LowerCase)
Ex.: NomeFuncionario
Camel Casing
O primeiro caracter de todas as palavras, com exceção da
primeira, deve estar em letra maiúscula (UpperCase) e o restante dos caracteres
em letra minúscula (LowerCase)
Ex.: nomeFuncionario
Notação Húngara
No inicio da palavra deve ser utilizado o prefixo do tipo da
variável como “s” para String e “n” para int, em conjunto com o camel casing.
Ex.: sNomeFuncionario
Obs.: A notação húngara é utilizada para podermos
identificar o tipo da variável. Atualmente ela não é recomendada, pois a
maioria das IDE’s possuem maneiras mais fáceis para verificação dos tipos das
variáveis.
Padrões do projeto
Agora vou explicar sobre os padrões utilizados em nosso
projeto:
Pascal Case
No projeto utilizaremos pascal case nas seguintes situações:
1.
Definição de classes
public class Funcionario
{
...
}
2.
Definição de métodos
{
...
}
3.
Definição de Propriedades
Propriedades são atributos públicos, ou seja, podem ser
acessados fora da classe através dos métodos Get e Set. A partir da versão 3.0
do .Net Framework, foram criadas as propriedades auto implementadas, onde esses
métodos são criados automaticamente. Em nosso projeto utilizaremos como padrão
as propriedades auto implementadas.
4.
Definição de interfaces
Utilizar pascal case com o prefixo “I” para definir as interfaces
public interface IEntidade
{
...
}
Camel Case
Utilizaremos camel case nas situações seguintes:
5.
Definição de atributos privados
private String
nomeFuncionario;
6.
Definição de parâmetros de métodos
public void CadastrarFuncionario(string
nome)
{
...
}
Descrição de Nomes
7.
Nomes Completos
Utilize sempre o nome completo para definir nomes de
variáveis, métodos, classes, etc. Não utilize abreviações.
Certo:
public String NomeFuncionario;
public void CadastrarFuncionario(string
nome)
{
...
}
Errado:
public String NmFun;
public void CadFun(string
nome)
{
...
}
8.
Não utilizar caracteres
Não utilizar apenas um caracter para definir o nome da
variável
Certo:
Errado
private int i;
Uma exceção para esta regra é na utilização de iterações em loops:
for ( int i = 0; i < count; i++ )
{
...
}
9.
Não utilizar o underscore (“_”)
Não utilizar o underscore na definição de parâmetros, para diferenciar
um atributo local de um parâmetro deve-se utilizar o “this.”.
Certo:
private String nome;
public Funcionario(string nome)
{
this.nome = nome;
}
Errado:
private String nome;
public Funcionario(string
_nome)
{
nome = _nome;
}
10.
Atributos boolean
Utilizar o prefixo “is” antes do nome da
variável
public Boolean IsFinalizado{ get; set; }
11.
Interface
Gráfica
Para elementos de interface gráfica, deve se utilizar a
seguinte tabela de prefixos como padrão. A notação deve ser camel case.
private Label lblNome;
Controle
|
Prefixo
|
Label
|
lbl
|
TextBox
|
txt
|
DataGrid
|
dtg
|
Button
|
btn
|
ImageButton
|
imb
|
Hyperlink
|
hlk
|
DropDownList
|
ddl
|
ListBox
|
lst
|
DataList
|
dtl
|
Repeater
|
rep
|
Checkbox
|
chk
|
CheckBoxList
|
cbl
|
RadioButton
|
rdo
|
RadioButtonList
|
rbl
|
Image
|
img
|
Panel
|
pnl
|
PlaceHolder
|
phd
|
Table
|
tbl
|
Validators
|
val
|
Referencias:
http://michaelsync.net/2008/02/29/c-30-tutorials-auto-implemented-properties-aka-automatic-properties acessado em 30/09/2012
http://pt.wikipedia.org/wiki/Nota%C3%A7%C3%A3o_h%C3%BAngara acessado em 30/09/2012
http://www.dotnetspider.com/tutorials/BestPractices.aspx acessado em 30/09/2012
http://www.1bit.com.br/content.1bit/weblog/programando_melhor_nomenclatura acessado em 30/09/2012