• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

perdido_e_sozinho

Coding Conventions, Porquê?

10 mensagens neste tópico

A importância das Coding Conventions

Nem todos os programadores concordam com as convenções de código, o facto é que estas são muito importantes, uma vez que permitem uniformizar o código, permitindo que vários departamentos programem da mesma maneira de forma a unir mais tarde todo um projecto. Imaginem o caos de programar um Windows ou Linux com milhoes de linhas de código onde cada programador programava com a suas próprias regras.

Quando nunca se utilizou qualquer regra na definição de controlos e variáveis, é dificil começar a usar regras, uma vez que se perde por vezes mais tempo, mas o facto é que em grandes programas esse tempo é ganho mais tarde. Além quantos de vocês não voltaram a pegar num projecto e não perceberam nada do que haviam desenvolvido à algum tempo atrás.

As Melhores Práticas para VB

Option Strict On

Esta opção obriga a que todas as variáveis sejam declaradas o facto é que evitam erros desenvolvidos sem razão melhorando a qualidade do código.

Camel Casing

Camel Casing consiste em colocar em minúscula a primeira letra, num formato idêntico ao seguinte: listaUtilizadores, dadosRegisto...

No VB deve ser utilizado em variáveis locais, privadas(private) ou protegidas (protected) que não estão acessíveis externamente.

Pascal Casing

Pascal Casing consiste em colocar em maiúscula a primeira letra de cada palavra num formato idêntico ao seguinte: ListaUtilizadores, DadosRegistos... No VB deve ser utilizado sempre que não se aplique o Camel Casing e em objectos.

Comentários

Todos os procedimentos devem ser correctamente comentados, de forma a possuirem informação que permita definir a sua finalidade e funcionamento.

Deve-se também comentar as variáveis e blocos lógicos. O comentário deve refletir o que faz o bloco de código e não repetir o código:

ERRADO

'Abrir um ficheiro de texto

Dim sr as new StreamReader("c:\texto.txt")

'Declarar um Inteiro

Dim i as Integer

'Repetir a leitura de cada linha

While sr.ReadLine()

      'Acrescentar 1

      i = i +1

End While

CORRECTO

'Conta o número de linhas no ficheiro

Dim sr as new StreamReader("c:\texto.txt")

Dim i as Integer

While sr.ReadLine()

      i = i +1

End While

A ter em Conta

Muitas pessoas acham que usar funções do namespace Microsoft.VisualBasic é incorrecto. Não podiam estar mais erradas, o facto é que estas funções fazem parte do próprio framework, e como tal não têm qualquer incompatibilidade com o framework. O que pode causar problemas e deve ser evitado ao máximo são as funções do namespace Microsoft.VisualBasic.Compactility que surge normalmente na conversão de projectos de VB6 para VB.NET. Este namespace é apenas temporário e tem de ser incluído nos projectos, causando muitos problemas.

Devem ser sempre usados nomes consistentes e reveladores do conteúdo das variáveis. Variáveis i,j,k podem ser usados em loop's triviais, mas se necessita de uma variável para guardar dados deve usar um nome consistente como por exemplo sNomeAluno.

Hungarian Notation

A Hungarian Notation foi criada com o objectivo de identificar o tipo de variável através do seu nome, o facto é que quando trabalhamos com muitos controlos ou em grupo, isto pode ser muito util.

De facto a Hungarian Notation é universal e é usada em diversas linguagens.

Para utilizar a Hungarian Notation basta adicionar um prefixo em minusculas ao nome da variável. Cada Prefixo tem um significado. Ex.: frmMenu no VB é uma form chamada Menu.

Controlos Standart
---------------------------------------------------------------------------------
Button 					btn
CheckBox				chk
CheckedListBox				clst
ColorDialog				cdlg
ColumnHeader				chdr
ComboBox				cbo
ContextMenu				cmnu
CrystalReportViewer			crv
DataGrid				grd
DateTimePicker				dtp
DomainUoDown				dud
ErrorProvider				erp
FontDialog				fdlg
Form					frm
GroupBox				grp
HelpProvider				hlp
HScrollBar				hsb
ImageList				img
Label					lbl
LinkLabel				lnk
ListBox					lst
ListView				lvw
Menu					mnu
MonthCalendar				cal
NotifyIcon				nico
NumericUpDown			nud
OpenFileDialog				odlg
PageSetupDialog			psd
PictureBox				pic
PrintDialog				pdlg
PrintDocument				pdoc
PrintPreviewControl			ppc
PrintPreviewDialog			ppd
ProgressBar				pbr
RadioButton				rad
RadioButtonList				rbl
RichTextBox				rtf
SaveFileDialog				sdlg
Splitter					spl
StatusBar				sbr
StatusBarPanel				sbp
TabControl				tab
TabPage				pge
TextBox				txt
Timer					tmr
ToolBar					tbr
ToolBarButton				tbb
TooTip					tip
TrackBar				trk
TreeNode				nod
TreeView				tvw
VScrollBar				vsb

Data Objects
-----------------------------------------------------------------------
Connection 				cnn
Command				cmd
CommanderBuilder			cb
DataAdapter				da
DataColumn				dcl
DataReader				dr
DataRow				drw
DataSet					ds
DataTable				dt
DataView				dv

As coisas que sempre foarm más, são más e sempre serã más!

O Goto, Option Explicit Off e On Error Resume Next nunca foram muito boas ideias. E ainda não são. Para controlo de erros deve-se utilizar a estrutura Try.

Try

   

    Dim x as Integer

    x = x / 0

Catch ex as Exception

    MsgBox(ex.Message)

Finally

    ' Este código corre sempre

End Try

Esta forma de controlo de erros evita que o programa tenha problemas e ainda permite determinar com precisão o tipo de erro, assim como correr algum código de correcção.

Deve-se ainda evitar o uso de caracteres fora do padrão A-Z, 0-9.

User Interface

As aplicações deverão ter sempre uma form de Sobre a aplicação e um menu de Ajuda para que o utilizador saiba onde pode encontrar suporte.

Cada utilizador deve utilizar estas Coding Conventions como entender e devem facilitar o seu trabalho, não complica-lo.

Com os melhores cumprimentos,

Sérgio Matias

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Grande post. Acho que já estava na altura de fazer passar as regras para o pessoal trabalhar em conjunto.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por acaso a maior parte dessas regras já usava e não sabia que faziam parte disso... dá jeito

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
por acaso a maior parte dessas regras já usava e não sabia que faziam parte disso... dá jeito

Yá!, há umas quantas que inconscientemente a malta usa, mas há outras coisas que são bastante interecantes que nao sabia que haviam, por exemplo isto:

Controlos Standart 
--------------------------------------------------------------------------------- 
Button                btn 
CheckBox            chk 
CheckedListBox            clst 
ColorDialog            cdlg 
ColumnHeader            chdr 
ComboBox            cbo 
ContextMenu            cmnu 
CrystalReportViewer         crv 
DataGrid            grd 
DateTimePicker            dtp 
DomainUoDown            dud 
ErrorProvider            erp 
FontDialog            fdlg 
Form               frm 
GroupBox            grp 
HelpProvider            hlp 
HScrollBar            hsb 
ImageList            img 
Label               lbl 
LinkLabel            lnk 
ListBox               lst 
ListView            lvw 
Menu               mnu 
MonthCalendar            cal 
NotifyIcon            nico 
NumericUpDown         nud 
OpenFileDialog            odlg 
PageSetupDialog         psd 
PictureBox            pic 
PrintDialog            pdlg 
PrintDocument            pdoc 
PrintPreviewControl         ppc 
PrintPreviewDialog         ppd 
ProgressBar            pbr 
RadioButton            rad 
RadioButtonList            rbl 
RichTextBox            rtf 
SaveFileDialog            sdlg 
Splitter               spl 
StatusBar            sbr 
StatusBarPanel            sbp 
TabControl            tab 
TabPage            pge 
TextBox            txt 
Timer               tmr 
ToolBar               tbr 
ToolBarButton            tbb 
TooTip               tip 
TrackBar            trk 
TreeNode            nod 
TreeView            tvw 
VScrollBar            vsb 

Data Objects 
----------------------------------------------------------------------- 
Connection             cnn 
Command            cmd 
CommanderBuilder         cb 
DataAdapter            da 
DataColumn            dcl 
DataReader            dr 
DataRow            drw 
DataSet               ds 
DataTable            dt 
DataView            dv

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim senhor, apesar de já conhecer algumas das coisas como a Hungarian Notation (que fui logo torcido desde "pequenino" para a utilizar, embora nunca a utilize:P) e o ExceptionHandling achei este (será tut?) bastante interessante.

Keep it up 8) 8) 8)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom post !!!!

Eu como não tive ninguém que me torce-se , aprendi nos livros que comprei !!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom post!

É mesmo isso.. pode não parece ser.. mas tudo isso é uma questão de pratica que se tornará num habito!

Compr.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ainda se usa Hungarian Notation? Pensei que já tivesse caído em desuso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sempre utilizei este tipo de convenção para não me perder com as variáveis, já utilizo desde o clipper a mais de 20 anos ;) (não eram estas eram minhas claro)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

também comecei a usar estas regras á pouco tempo.. e agora olho para os trabalhos mais antigos e não sei como fui capaz de me orientar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora