Tag Archives: generics

I Love C# – Prática Sintaxe

Implementação: Sintaxe

Boas práticas de uso geral do C#.

Algumas notações úteis para seguir:

Projeto

Deve seguir o nome do namespace.

Arquivo fonte

Deve ser sempre igual ao nome da classe.

Resource/Outros arquivos anexos

Utilize nome descritivo, utilizando nomenclatura pascal.

Namespace

Deve corresponder ao nome do projeto, notação pascal.

Exemplo: NomeEmpresa.NomeProjeto

WA.MyApp
WA.MyApp.UI

Classe

Notação pascal.

Classes (Inicia com maiúsculo e no singular) Pascal Casing.

Aluno.cs
Comercio.cs

É legal a notação padrão Java para nomear classes/métodos: Classes sempre iniciam com uppercase e métodos em lowercase.

Interface

Notação pascal, e prefixada por I.

Classe Generica e Tipo de parâmetro Generico

Utilize somente uma letra como T ou K.

Método

Notação pascal. Preferencialmente use um verbo.

Property

Notação pascal. Não deve haver Get ou Set como prefixo de properties.

Atributos

Sempre Privates e acessados por Properties. Notação camel. Não devem ser precedidos por “_”.

Consts e Variáveis estáticas

Segue o mesmo padrão de atributos.

Enumerator

Notação pascal para o tipo e os valores.

Event/Delegate

Mesmo que constantes.

Variáveis locais e Parâmetros

Notação camel, precedidos por p.

Evite nomeá-los numericamente:

pCont1
pCont2

Pascal Casing

strEmail
dteDataMatricula
intAlunoId
bitPrimeiroContato
sngTotal
dblTamanho
decTamanho
curTotal
binContrato

Ok! Um pouco sobre o Boas Práticas.

 

Generics – Teorias (Reuso)

Ex 1 : Reuse facilmente o código

Entendendo um pouco sobre Generics. Característica importante comparada aos tipos convencionais não Generics.

Um conceito importante para entender esse recurso é a questão de reuso de código. Vamos lá:

Já vimos que, ao implementar tipos byVal com classes collection no generics, temos as operações boxing/unboxing que aumentam a sobrecarga quando tipo byVal for convertido para byRef e vice-versa.

Utilizando classes genéricas, é possível defini-la apenas uma vez e instanciá-la de várias formas. Podemos inclusive, defini-la em uma linguagem .NET e utilizá-la em outra linguagem.

Chega de Teoria!

Instanciando objetos genericos

ClasseGenerica<int> objGen = new ClasseGenerica<int>();
objGen.Adicionar(4);

ClasseGenerica<string> objGen2 = new ClasseGenerica<string>();
objGen2.Adicionar("Developer");

ClasseGenerica<Pessoa> objGenP = new ClasseGenerica<Aluno>();
objGenP.Adicionar(new Pessoa { id = 4, nome = "Aldo" });

Instancio a classe ClasseGenerica<T> com tipo int e string.

Instancio utilizando um tipo definido pelo usuário como uma classe Pessoa.

Pronto! Agora tente realizar isso utilizando uma classe não genérica.