Pular para o conteúdo principal

10 Dicas para aumentar sua produtividade com C#

10 Dicas para aumentar sua produtividade com C#


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:
1int x = 10;
2int y = 20;
3int max;
4 
5if(x > y)
6   max = x;
7else
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:
1int x = 10;
2int y = 20;
3int max = (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:
1object cache = null;
2object d = new object();
3object e = (c != null) ? c : d;
Obviamente poderíamos reescrever usando o operador ternário:
1object cache = null;
2object d = new object();
3object e = (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):
1object cache = null;
2object d = new object();
3object e = 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:
1Cliente c = new Cliente();
2c.Nome = "João";
3 
4c.Endereco = "Rua Lima 204";
E agora usando os inicializadores de objeto:
1Cliente c = new Cliente { 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
02Font font1 = new Font("Arial", 10.0f);
03try
04{
05 // 2. Usando o recurso
06}
07finally
08{
09// 3.Descartando o objeto
10if (font1 != null)
11((IDisposable)font1).Dispose();
12}
A diretiva using permite comprimir o código anterior em:
1// alocando o recurso
2using (Font font1 = new Font("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#:
1using Word = Microsoft.<span id="span_dynabox" style="display:inline; background:transparent; padding:0pt; border:0px none transparent; color:transparent; margin:0px; visibility:visible;"><label class="adz" style="color:#003399;cursor:pointer;border-bottom:1px dashed #FF0000;text-decoration:underline;color:#FF0000;display:inline;margin:0px;" idu="0" termo="office">Office</label></span>.Interop.Word;
2...
3Word.Application = new Word.Application() { Visible = True; }
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!
1Nullable x = null;
2int? 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.
1public class Pessoa{
2 private string _primeiroNome;
3 public string PrimeiroNome
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:
1public class Pessoa
2{
3 public string PrimeiroNome { 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:
1string MyString = “Hello World”;
Desta forma:
1var 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:
1var elencoSenior = Empregados.Where(s => s.Idade > 35);
2foreach(var membro in elencoSenior)
3           Console.WriteLine("Nome: {0} Idade: {1}",membro.Nome, membro.Idade);
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:
1var 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;
1if (String.IsNullOrEmpty(s) == true)
2    return "é nula ou vazia";
3else
4     return String.Format("(\"{0}\") é nula ou vazia.", s);
Créditos originais: http://www.dijksterhuis.org/10-c-coding-shorthands-that-improve-productivity/#more-897

Comentários

Postagens mais visitadas deste blog

C# para Android: Como Desenvolver Aplicativos Eficientes

  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 Download

  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

O que é C# - Csharp

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.