Padrão de Codificação
Data Publicação: 21/8/2008 0:43:34
Total de visualizações:
1768
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:
1768
|
|
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; linha de pesquisa Desenvolvimento de Aplicativos para TV Digital. Tenho 26 anos e possuo cinco livros publicados pela editora Ciência Moderna no ano de 2007.Sou Certificado Microsoft MCP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros. Trabalho como Consultor de TI na Brasil Telecom. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org
|
|