Busca online em todo site:

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.




Título do Artigo

Padrão de Codificação


Data Publicação: 21/8/2008 0:43:34
Total de visualizações: 3094

comente
 


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



Total de visualizações: 3094
voltar   comente  subir

Autor:


Por:Mauricio Junior
Maurício Júnior
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 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.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.orgSite pessoal  www.mauriciojunior.org


Comentários:


Comente (dê sua opinião): VOCÊ PRECISA ESTAR LOGADO

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

Permitir Teste pelo Browser no WebService
Public Interface
O vírus do curriculum
Nova promoção hoje e amanhã para usuários da comunidade aspneti.com
Criando Números Aleatoriamente
Virtual Earth - Segundo Passo
Evento BrasilDotNet 2008
Exemplo do livro Programando em C# para Web
Vídeo - Microsoft Surface: The Power
Imprimir com Visual Studio.NET 2005 usando C#.NET.
Mobilidade e Aplicativos Mobile
Java J2EE – Segundo Passo
Usando public interface
Aplicativos para Dispositivos Móveis, Usando C#.NET com a ferramenta Visual Studio.NET e com Banco de Dados MySQL e SQL Server
Conecte - novidades tecnológicas revolucionam a medicina
Desktop Linux Ubuntu
Novo SO Palm, depois da venda...
Public Interface
Permissão de Página Utilizando Web.Config
OpenWave SDK 6.2.2
Pop3 aberto no Hotmail
SQLEngine Utilizando Upgrade
Criando XML a partir do DataSet Tipado com Visual Studio.NET 2005 – Parte I
Mensagem JavaScript com .NET
Vídeo mostrando como validar vários formulários
Criando menu dinâmico com C#.NET (Passo 2) - Com diferenciação de usuário
Estatísticas de Acesso na Comunidade ASPNETi.COM
CES em Las Vegas
Java J2EE – Primeiro Passo
QR Code com ASP.NET
Novo TechNet Experience Online
Nova geração HTML
Virus: Provocando sua curiosidade
Dados via Post no VS 2005
Desenvolvimento de Aplicativos para TV Digital - Parte 4

Publicidade:

[sumir] [aparecer]
DEVMEDIA




Informaes Online:

Usurios Online: 246
Artigos:  663
Vdeos:  47
PodCast's:  31
Frum:  3098
Empregos:  1226
Usurios Cadastrados: 5790

Categoria de Artigos

Vdeos

Enquete - D sua opinio

 Os podcasts tem sido proveitoso pra você?

 

Colaboradores

Foto Autor autor: Mauricio Junior   
publicou 382 artigo(s).
Foto Autor autor: Júlio Battisti   
publicou 51 artigo(s).
Foto Autor autor: Fabio Galante Mans   
publicou 28 artigo(s).
Foto Autor autor: Kleber Becerra   
publicou 10 artigo(s).
Foto Autor autor: Ramon Durães   
publicou 6 artigo(s).
Foto Autor autor: Ebenézer de Souza   
publicou 5 artigo(s).
Foto Autor autor: Fabio Aguiar   
publicou 4 artigo(s).
NETITC