DICAS .NET

 Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

Padrão de Codificação

por Mauricio Junior em 1/1/2011 0

Padrão de Codificação para .NET
C#.NET

     Olá pessoal, meu nome é Mauricio Júnior e estou disposto a colocar para vocês um documento de padrão para codificação de sistemas e códigos. Dessa forma, se todos programarem de uma mesma forma dentro de uma empresa ou sistema, o código será entendido por qualquer pessoa no futuro que for executar alguma modificação no sistema. Esse tipo de documento é ótimo para começar um sistema por uma equipe, tudo se torna mais fácil e ágil programar.

Índice Analítico
1.    Introdução    4
2.    Padrões de desenvolvimento C#    4
2.1    Endentação de código    4
2.2    Comentários    4
2.2.1    Comentários de classes e métodos    5
2.3    Declarações    6
2.3.1    Variáveis privadas de classe    6
2.3.2    Variáveis locais    6
2.3.3    Namespace    6
2.3.4    Interface    6
2.3.5    Métodos    6
2.3.6    Enumerações    6
2.3.7    Eventos    7
2.3.8    Constantes    7
2.3.9    Exceções    7
2.3.10    Propriedades públicas    7
2.3.11    Windows Forms    7
2.3.12    Objeto de dados    10
2.3.13    Variáveis    10
2.3.14    Web Forms    11
2.4    Considerações    11
3.    Referências    12
 

1.    Introdução
Este documento tem como objetivo elaborar uma padronização para o desenvolvimento em C#, considerando os seguintes tópicos:
    
•    Padronização de nomenclatura usada na programação de métodos, objetos, variáveis e constantes. Além disso, trata como deverá ser feita a documentação dentro do código.
        

2.    Padrões de desenvolvimento C#
2.1    Endentação de código
Alguns trechos de código podem ficar muito extensos e você deverá encarar o dilema de quebrar a linha.
• Quebrar a linha após uma vírgula;
• Quebrar a linha após um operador;
• Alinhar a nova linha no inicio da expressão no mesmo nível da linha anterior.
Exemplo:
longMethodCall(expr1, expr2, expr3,
                      expr4, expr5);
e
var = a * b / (c - g + f) +
         4 * z;
Outro fator importante é a utilização de espaços em branco para endentação. Não use espaços em branco para endentação, use tabulação. Motivos: Facilidade de incrementar e decrementar blocos de código através de atalhos de teclas do editor de código.
2.2    Comentários
Utilizar as três barras “///” para comentários de classes e métodos. O motivo é utilizar a funcionalidade do Visual Studio .NET de transformar comentários em documentação de código. Entretanto, para comentários que não necessitam ser publicados, seguem algumas sugestões:
O comentário é importante para você ou outra pessoa ser orientada sobre a manutenção de um código fonte, tenha atenção à forma de destacar o comentário. Por exemplo, comentários com mais de uma linha poderiam ser assim:
/** Line 1
* Line 2
* Line 3
**/
Para comentários de uma linha somente, o comentário deve ser uma espécie de marcador de loops ou não deve ser aplicado. A questão é que como exposto em linhas anteriores, os comentários devem chamar a atenção visando facilitar e direcionar a manutenção. Somente justifica-se um comentário de uma linha quando você necessita marcar dentro de um bloco de código o início de um nível de endentação ou loop. Exemplo:
//Verifica se somente uma string foi entrada
if(args.Length==1)
      Console.WriteLine(args[0]);
else
{
      ArgumentOutOfRangeException ex;
      ex = new ArgumentOutOfRangeException("Utilize somente uma string");
      throw(ex);
}
Outra boa aplicação para comentários de uma linha é a explicação de uma declaração. Por exemplo:
int levelStatus; // nível do status
int sizeStatus; // tamanho do status

2.2.1    Comentários de classes e métodos
Toda classe e método devem ser documentados. O padrão utilizado segue abaixo:
/// <summary>
/// Retorna DirectoryEntry representando a unidade organizacional.
/// </summary>
/// <param name="coopCentral">Cooperativa Central.</param>
/// <param name="cooperativa">Cooperativa desejada</param>
/// <returns>
/// Resulado da busca no AD.
/// </returns>
/// <exception cref="ActiveDirectoryManager.ActiveDirectoryManagerException">
/// Se não for encontrada a unidade organizacional.
/// </exception>
/// <remarks>
/// Criado por: <nome>
///  Alterado por: <nome>
/// </remarks>

2.3    Declarações
2.3.1    Variáveis privadas de classe
Utilizar a definição CamelCase (a primeira letra do identificador é minúscula e a primeira letra de cada identificador subseqüente concatenado é maiúscula).
Exemplo:
String firstName;
2.3.2    Variáveis locais
Utilizar a definição CamelCase.

2.3.3    Namespace
Utiliza-se o nome da empresa seguido pelo nome do projeto, camada de negocio e o modulo que está sendo desenvolvido.
Exemplo:
Bancoob.NomeProjeto.CamadaNegocio.AccessControl
2.3.4    Interface
O nome de interface deve ser PascalCase (a primeira letra do identificador é maiúscula e a primeira letra de cada identificador subseqüente concatenado é maiúscula), e começar com o prefixo “I”, para indicar que o tipo é uma interface.
Exemplo:
IServiceProvider

2.3.5    Métodos
Utilizar a definição PascalCase.
2.3.6    Enumerações
Utilizar a definição PascalCase.
2.3.7    Eventos
Utilizar a definição PascalCase para o nome do evento.
Utilizar o sufixo EventHandler para o nome do delegate associado ao evento. Especificar dois parâmetros “sender” e “e”. O parâmetro “sender” representa o objeto que disparou o evento e deve ser sempre do tipo Object, mesmo sendo possível utilizar um tipo especifico. O estado associado com o evento é encapsulado em uma instancia de um evento de classe chamado “e”.
Exemplos:
public delegate void MouseEventHandler (object sender, MouseEventArgs e)
public event MouseEventHandler Click;

2.3.8    Constantes
Nomes de constantes deverão ser todos maiúsculos com as palavras separadas por um underscore.
Exemplo:
A2A_MAX
2.3.9    Exceções
O nome de uma classe de exceção deve utilizar a definição PascalCase,  e finalizar com a expressão Exception, para indicar que o tipo é uma exceção.
Exemplo:
ServiceProviderException

2.3.10    Propriedades públicas
Utilizar a definição PascalCase para o nome de propriedades.
Exemplo:
public int PrinterStatus
     {
     }
 
2.3.11    Windows Forms
Abaixo temos a lista de componentes e os prefixos:
Componente     Prefixo     Exemplo
Assembly    asm    
Button     btn     btnExit
Char    ch     chxxx
CheckBox     chk     chkReadOnly
CheckedListBox     clb     clbOptions
ColorDialog     cld     cldText
ComboBox     cbo     cboEnglish
Container     ctr    
ContextMenu     cmn     cmnOpen
CrystalReportViewer     rpt     rptSales
DataColumn    dcol    
DataGrid     grd     grdQueryResult
DataGridDateTimePickerColumn    dgdtpc    
DataGridTableStyle    dgts     
DataGridTextBoxColumn    dgtbc    
DataReader    dreader    
DataRow    drow    
DataTable    dtable    
Dialog    dialog    
DialogResult    dr    
DomainUpDown     upd     updPages
ErrorProvider     err     errOpen
Exception    ex    
FontDialog     ftd     ftdText
Form     frm     frmEntry
GroupBox     grp     grpActions
HashTable    htbl    
HelpProvider     hlp     hlpOptions
HScrollBar     hsb     hsbMove
ImageList     ils     ilsAllIcons
Label     lbl     lblHelpMessage
LinkLabel     lnk     lnkEmail
ListBox     lst     lstPolicyCodes
ListView     lvw     lvwHeadings
MarshallByRefObject    rmt     
Mainmenu    mm    
MDI-Frame    frame    
MDI-Sheet    sheet    
Menu     mnu     mnuFileOpen
MenuItem    mi    
MonthCalendar     mcl     mclPeriod
NotifyIcon     nti     ntiOpen
NumericUpDown     nud     nudPieces
OpenFileDialog     ofd     ofdImage
PageSetup Dialog     psd     psdReport
Panel     pnl     pnlGroup
PictureBox     pic     picIcon
PrintDialog     ptd     ptdText
PrintDocument     prn     prnText
PrintPreviewControl     ppc     ppcText
PrintPreviewDialog     ppd     ppdText
ProgressBar     prg     prgLoadFile
RadioButton     rad     radType
RichTextBox     rtf     rtfReport
SaveFileDialog     sfd     sfdImage
SDI-Form    form    
Splitter     Spt     sptDivision
StatusBar     sta     staDateTime
TabControl     tbc     tbcOptions
TextBox     txt     txtLastName
Timer     tmr     tmrAlarm
ToolBar     tlb     tlbActions
ToolTip     tip     tipIcons
TrackBar     trb     trbIndex
TreeView     tre     treOrganization
UserControl    usr    
VScrollBar     vsb     vsbMove
WindowsPrincipal    wpl    

2.3.12    Objeto de dados
Abaixo temos alguns componentes de comunicação de dados:
Componente     Prefixo     Exemplo
DataSet     dts     dtsProducts
DataView     dtv     dtvConsult
OleDbCommand     ocm     ocmConsult
OleDbConnection     ocn     ocnClients
OleDbDataAdapter     oda     odaClients
SqlCommand     scm     scmConsult
SqlConnection     scn     scnClients
SqlDataAdapter     sda     sdaClients

2.3.13    Variáveis
Veja a lista abaixo de tipos e prefixos:
Tipo     Prefixo
String, string    str
Boolean    bln
Byte    byt
Int16, int32    int
Long    lng
Single    sgn
Double    dbl
Currency    cur
Date Time    dtm
Variant    var
Array    ary
User-defined type    typ
Enum    enu
Collection Object    col

2.3.14    Web Forms
Veja a lista abaixo de tipos e prefixos:
Tipo     Prefixo
AdRotator    adrtr
Button    btn
Calendar    cldr
CheckBox    cbx
CheckBoxList    cbxl
CompareValidator    cvdr
CrystalReportViewer    crvwr
DataGrid    dgrd
DataList    dlst
DropDownList    ddl
HyperLink    hlnk
Image    img
ImageButton    ibtn
Label    lbl
LinkButton    lbtn
ListBox    lbx
Literal    ltrl
Panel    pnl
PlaceHolder    phdr
RadioButton    rbtn
RadioButtonList    rbtnl
RangeValidator    rvdr
RegularExpressionValidator    rev
Repeater    rptr
RequiredFieldValidator    rfv
Table    tbl
TextBox    tbx
ValidationSummary    vsmy
Xml    xml


2.4    Considerações
Ao declarar variáveis, procure seguir as considerações abaixo.
Ao invés de:
int a, b;           
usar:
int a; // Valor de entrada 1
int b; // Valor de entrada 2          

Sempre inicializar suas variáveis no local aonde são declaradas.
int a = 1; Valor de entrada 1           

3.    Referências
1.    http://www.microsoft.com/brasil/msdn/Tecnologias/visualc/visual_c_boaspraticas.aspx
2.    http://www.akadia.com/services/naming_conventions.html

voltar   comente  subir

Download Copy





 
Mauricio Junior Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org



Comentários:


Comente (dê sua opinião):

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Sistema de Login em ASP – Parte II
Problemas na acentuação
Vídeo aula explicando o que é o FreeTextBox e como utilizar em seu projetos ASP.NET.
Criando a Tag Cloud em C#
Dica de Segurança no Arquivo de Configuração - Web / App .config
MaskedTextBox da direita para esquerda
Teclas de atalho - Visual Studio .NET 2005
Customizando o Membership e Role Provider
Windows Phone 7 Multi Touch
Alongar é preciso
Keynote iniciando com o Windows Azure
Validator no VS 2005
Formatando String rapidamente
Loja Apple (a2you.com.br) feita em .NET (Microsoft)
Sistema de Login em ASP – Parte X
Prepare o Sql Server para o VS 2005
DateDiff em C#.NET
Dicas para programar melhor
Aplicativo iCantada Free
Criando XML a partir de um DATASET tipado – Parte II
Channel9 - Soap, OData, Json
Web 2.0 - A máquina somos nós
Método SHA 256
Resources e Internacionalização usando Visual Studio.NET 2005 (Parte I)
Criando XML a partir do DataSet Tipado com Visual Studio.NET 2005 – Parte I
Pegando IP da Máquina com CSharp
GridView Parte II
Criando Teclas de Atalho no Windows Form
Vídeo - Conecte
Vídeos para download
Detectando Browser Mobile
Entrevista com Bruno PorKaria
Converte Imagem em Array e Array em Imagem
LG Optimus Black
MSDN Code Gallery




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...

Promoções de livros móveis .NET

Baixa agora o seu e aprenda a programar....

A Era dos UltraBooks

Os modelos mais dos Ultrabooks...




NETITC