domingo, 30 de setembro de 2012


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

public void CadastrarFuncionario(string nome)
{
      ...
}

    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.

public NomeFuncionario { get; set; }

    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:

private int index;

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:




quinta-feira, 13 de setembro de 2012

Ontem, 12/09, após a apresentação oficial de nossa proposta de projeto, o professor Ivan nos relatou problema com o feed do blog.
Depois de uma alteração na configuração, veremos se já está funcionando.

quarta-feira, 5 de setembro de 2012

Projeto de Final de Curso - NoPSIU!


NoPSIU!

Num restaurante lotado a disputa para receber o atendimento de um garçom é tremenda.
Além do braço acenando, tentando chamar à atenção, frases como “Ô, garçom!”, “Hei, amigo!”, “Ô, meu chapa, por favor!” além do tradicional “psiu...psiuuuuu!” são bastante comuns.

Nossa intenção é acabar ou, pelo menos, minimizar o “psiu!” nos restaurantes.
Para tanto, nossa proposta para o projeto final é desenvolver uma aplicação para dispositivos móveis onde o cliente possa visualizar o cardápio do restaurante e efetuar seu pedido sem a necessidade da presença de um garçom, agilizando muito mais o atendimento.

Membros do grupo:

Fabiano Mendes
Gabriel Café
Rogério Norio Okawa
Sérgio Ferreira
Thomás Daniel Gerotti
Wesley Camargo