Junta
uma dica daqui, outra dali, e voilá, seguem 10 dicas para aumentar sua
produtividade enquanto programa usando a linguagem C#. Obviamente não
estou falando de atalhos, que também são muito úteis, mas apenas de
práticas muitas vezes pouco conhecidas para aumento de produtividade,
redução de código e por aí vai. Muitas só funcionam a partir do
Framework 3.5, mas acredito que nesta altura do campeonato ninguém
deveria estar programando em 2.0 ou frameworks inferiores... 1. Operador Ternário '?'
Use-o com moderação ou ele prejudicará a legibilidade de seu código.
Basicamente o operador ternário substitui um bloco if tradicional em uma
única linha de código. Novidade? NOT! Operadores ternários existem na
linguagem C desde a década de 70. Na prática funciona assim, imagine o
seguinte bloco de código:
1
intx = 10;
2
inty = 20;
3
intmax;
4
5
if(x > y)
6
max = x;
7
else
8
max = y;
Você pode substituí-lo usando o operador ternário que funciona da
seguinte forma (Questão) ? (Ação Positiva) : (Ação Negativa). Vamos ver o
exemplo anterior usando operador ternário:
1
intx = 10;
2
inty = 20;
3
intmax = (x > y) ? x : y;
2. Operador Null-coalesce '??'
Quantas vezes você tem de testar se objetos são nulos em seu código? O
operador null-coalesce pode vir a ser útil a você então. Considere o
seguinte código:
1
objectcache = null;
2
objectd = newobject();
3
objecte = (c != null) ? c : d;
Obviamente poderíamos reescrever usando o operador ternário:
1
objectcache = null;
2
objectd = newobject();
3
objecte = (c != null) ? c : d;
Porém, usando o operador null-coalesce, conseguimos encurtar ainda
mais o código (se o objeto do lado esquerdo é null, então ele retornará o
valor do lado direito):
1
objectcache = null;
2
objectd = newobject();
3
objecte = c ?? d;
3. Inicializadores de Objetos
Cansado de perder várias linhas de código para ficar setando valores
de propriedades? Ou então cansado de ficar escrevendo dezenas de
sobrecargas de construtores? Os construtores auto-implementados que
surgiram na versão 3.0 do C# resolvem seu problema e de quebra ainda
melhoram a legibilidade de seu código. Primeiro vamos ver o jeito
tradicional de inicializar um objeto:
1
Cliente c = newCliente();
2
c.Nome = "João";
3
4
c.Endereco = "Rua Lima 204";
E agora usando os inicializadores de objeto:
1
Cliente c = newCliente { Nome="João", Endereco = "Rua Lima 204"};
4. A diretiva 'using'
Uma vez que você precisa alocar um objeto em memória um pouco mais
pesado que o normal, como streams e arquivos de mídia, é importante que
seja feito um controle mais rigoroso na hora de liberar a memória
novamente, evitando problemas futuros. Ou seja, sempre temos de fazer
três etapas: criamos o objeto, usamos ele e o descartamos. Isso pode ser
ilustrado com o trecho de código abaixo:
01
// 1. Alocando o objeto
02
Font font1 = newFont("Arial", 10.0f);
03
try
04
{
05
// 2. Usando o recurso
06
}
07
finally
08
{
09
// 3.Descartando o objeto
10
if(font1 != null)
11
((IDisposable)font1).Dispose();
12
}
A diretiva using permite comprimir o código anterior em:
1
// alocando o recurso
2
using(Font font1 = newFont("Arial", 10.0f))
3
{
4
// Usando o recurso
5
}
6
// Descarte automático
A diretiva using somente pode ser utilizada em objetos que implementem a interface IDisposable.
5. Apelidos para nomes de classes e namespaces muito grandes
Nomes em C# podem se tornar muito longos. Se você está desenvolvendo algo para ,
pode estar querendo abrir um processo do Word para criar um documento, o
que cria objetos com namespaces enormes. O código abaixo, usando a
diretiva using para criar um apelido de namespace ilustra outro uso
deste suíço da programação C#:
6. Objetos Nullables
Algumas vezes é necessário que suas variáveis possam conter valores
nulos, mesmo quando é um simples inteiro. Isto ocorre com mais
frequência quanto trabalhos com mapeamento objeto-relacional, pois na
maioria dos bancos de dados sempre teremos tabelas com colunas que podem
conter valores nulos. Para tornar um variável comum em uma variável que
aceita null, basta adicionar um '?' ao final do tipo e pronto!
1
Nullable x = null;
2
int? x = null;
Os nullable-types surgiram na versão 2.0 do framework e podem ser invocados das duas formas exibidas anteriormente. 7. Propriedades Automáticas
No C# 3.0 ganhamos as propriedades automáticas. Geralmente a maioria
das propriedades das classes são apenas exposições de atributos privados
ao restante do sistema. Dificilmente elas possuem alguma lógica ou
verificação que realmente exija a criação de um atributo privado e de
uma propriedade pública. Desta forma, para que ficar repetindo gets e
sets sempre iguais, retornando o valor de um atributo privado? Desta
forma, as propriedades automáticas vieram para agilizar a tarefa de
criação de propriedades que nada mais fazem do que retornar ou receber
valores. Vale salientar que em
de compilação vão ser gerados atributos privados para onde os valores
dessas propriedades ficarão armazenados. Ous eja, não muda nada para o
sistema, apenas para o programador.
1
publicclassPessoa{
2
privatestring_primeiroNome;
3
publicstringPrimeiroNome
4
{
5
get{ return_primeiroNome; }
6
set{ _primeiroNome= value; }
7
}
8
}
O bloco de código anterior mostra o jeito antigo de fazer as coisas. O bloco seguinte mostra as propriedades automáticas:
1
publicclassPessoa
2
{
3
publicstringPrimeiroNome { get; set; }
4
}
Para quem acha que criar propriedades automáticas públicas é a mesma
coisa que criar atributos públicos, está redondamente enganado. O método
DataBind presente na maioria dos controles de exibição de dados somente
efetua o Bind sobre propriedades públicas e nunca sobre atributos de
classe. Desta forma, se pretende que sua classe possa ser exibida em
controles deste tipo, é bom usar as propriedades corretamente.
8. Inferência de Tipos
Esta é outra dica que deve ser usada com cuidado. Eu particularmente
uso apenas quando estou trabalhando com namespaces desconhecidos ou com
LINQ e Lambda Expressions. Sendo o C# uma linguagem fortemente tipada, é
natural que aja toda uma preocupação com escolher o melhor tipo para as
variáveis e objetos que serão utilizadas. Da mesma forma, é importante
conhecer os diversos tipos existentes quando se está manipulando métodos
de terceiros. A inferência de tipos permite que você deixe de escrever o
tradicional código:
1
stringMyString = “Hello World”;
Desta forma:
1
var MyString = “Hello World”;
Peraí, igual no Javascript? NOT! Mesmo com a inferência de tipos C#
ainda é uma linguagem fortemente tipada e uma vez que a inferência
esteja concluída (i.e. a variável recebeu um valor) o tipo de seu
conteúdo jamais poderá ser alterado. Novamente, isto é apenas a nível de
programação. Quando o compilador entra em ação, ele atribui os tipos
corretos conforme a necessidade, nos poupando do trabalho de decorar os
mais variados tipos e retornos de chamadas de métodos. O objeto do tipo
inferido pode perfeitamente ser utilizado como um objeto normal, como o
código a seguir nos mostra:
1
var elencoSenior = Empregados.Where(s => s.Idade > 35);
Mas então, qual o tipo de elencoSenior? ((System.Linq.Enumerable.Iterator<<>f__AnonymousType0>)(SeniorStaff))
Bizarro não? Já imaginou ter de trabalhar com este tipo maluco? Muito mais fácil com inferência de tipos. 9. Expressões Lambda
Expressões Lambda são expressões de consulta feitas sobre coleções de
dados de forma extremamente otimizada e simples, criando um poderosa
de produtividade. Por exemplo, se tivéssemos uma lista de 30
funcionários e quiséssemos saber todos os funcionários que possuem mais
de 35 anos? Tradicionalmente teríamos de fazer um laço para percorrer
todos os elementos dalista comparando a idade de cada elemento e
adicionandoos em uma outra fila à medida em que forem encontrados os
funcionários mais velhos. Com Lambda, tal tarefa se restringe somente a:
1
var elencoSenior = Empregados.Where(s => s.Idade > 35);
10. string.IsNullOrEmpty()
Não necessariamente uma feature da linguagem, mas um método estático
muito útil da classe string. Me impressiono como existem pessoas que não
conhecem esta poderosa ferramenta para testar se strings estão nulas
(null) ou vazias (""). Segue exemplo de código;
1
if(String.IsNullOrEmpty(s) == true)
2
return"é nula ou vazia";
3
else
4
returnString.Format("(\"{0}\") é nula ou vazia.", s);
Linguagem de Programação C# para Android: Como Desenvolver Aplicativos Eficientes A linguagem de programação C# é uma das opções para desenvolver aplicativos para Android. Essa linguagem, desenvolvida pela Microsoft, é bastante semelhante ao Java, o que facilita a sua utilização para o desenvolvimento de aplicativos Android. Além disso, o C# é uma das linguagens mais importantes do mercado empresarial, o que torna o seu aprendizado uma vantagem para quem busca uma carreira na área de desenvolvimento de software. Para desenvolver aplicativos Android com C#, é possível utilizar a plataforma Xamarin, que é uma ferramenta da Microsoft para desenvolvimento de aplicativos móveis multiplataforma. O Xamarin permite que o desenvolvedor escreva o código em C# e depois compile o aplicativo para as plataformas Android e iOS. Isso torna o desenvolvimento mais rápido e eficiente, pois não é necessário escrever o código duas vezes para as duas plataformas. Outra vantagem do uso do C# para o desen
Visual C# 2010 Express Construa aplicativos personalizados em Visual C#, uma linguagem simples, poderosa, segura e orientada a objetos que permite rápido desenvolvimento de aplicativos com a expressividade e elegância das linguagens estilo C. Depois da instalação, você pode experimentar o produto por até 30 dias. Você precisa se registrar para obter a chave gratuita para continuar usando depois desses 30 dias. Download
C♯ , também escrito como C# ou C Sharp (em português lê-se "cê charp"), é uma linguagem de programação orientada a objetos, fortemente tipada, desenvolvida pela Microsoft como parte da plataforma .NET. A sua sintaxe orientada a objetos foi baseada no C++ mas inclui muitas influências de outras linguagens de programação, como Object Pascal e Java.
Comentários
Postar um comentário