Utilizar boas práticas de programação é um item básico para quem planeja ou já atua na área, trata -se de tudo que pode tornar o código melhor, ou seja  mais legível, veloz, econômico e de fácil manutenção.Um programador que usa boas práticas facilita o entendimento do seu código para seus colegas, e para si mesmo, poupando seu tempo e o da empresa.

Novas boas práticas podem ser criadas todos os dias, já que programadores sempre se deparam com novas situações, por isso todo desenvolvimento exige acima de tudo bom senso,  o ideal é programar visando sempre a melhor performance, o entendimento do código.
Alguns exemplos práticos:

Usar nomes de variáveis com significado
c = da + db;
dataMaxima  = dataPedido + diasPrazo;

Prefixos para nomes de controle
txt textbox - txtName
btn Button  - btnSalvar

Seguir um padrão para nomenclatura de métodos e variáveis (Camel Casing, Pascal Casing)
private idCliente;
public datetime CalculaPrazo() {..}

Comentar o código sempre que ele não for auto explicativo.
Usar identação.
Não repetir códigos desnecessariamente.

if (x)
{
  xx();
  a();
}
else
{
  yy();
  a();
}

Certo:

if (x)
  xx();
else
  yy();
a();

Usar menos loops possiveis

for(int i = 0; i < cotas.Count; i++)
{
  cotas[i].valor = valorPadrao;
}
xxxxxx
xxxxxx
for(int i = 0; i < cotas.Count; i++)
{
 cotas[i].prazo = prazoPadrao;
}

O melhor seria:

for(int i = 0; i < cotas.Count; i++)
{
   cotas[i].valor = valorPadrao;
   cotas[i].prazo = prazoPadrao;
}
xxxxxx
xxxxxx

Minimar o trabalho em loops

for(int i = 0; i < cotas.Count; i++)
{
   cotas[i].prazo = CalculaValorPadrao();
}
int valorPadrao = CalculaValorPadrao();
for(int i = 0; i < cotas.Count; i++)
{
   cotas[i].valor = valorPadrao;
}


Carregar objetos somente se for necessário.

private int idCliente;
private Cliente clienteExterno = null;
public ClienteExterno
{
   get
   {
     if (clienteExterno  == null)
         clientexterno = CarregaClienteExterno();
     return clienteExterno;
   }
}

Interromper processos desnecessários, para isso o uso de “break”, “continue”, ou “return” é muito útil.

public void buscaCliente(string nome)
{
   Cliente clienteRetorno = null;
   foreach  (Cliente  cliente in clientes)
   {
      If (cliente.Nome == nome)
      {
         clienteRetorno = cliente;
         break; //interrompe verificação quando encontra
       }
   }
   return cliente;
}


Usar métodos quando um trecho de código é chamado mais do que uma vez;

public void ConsultaCadastro()
{
  ...
  txtNome = nome;
  txtIdade = idade;
  ...
}
public void AtualizaCadastro()
{
   ...
   txtNome = nome;
   txtIdade = idade;
   ...
}


Justifica a criação de método carrega cadastro para ser chamado nos métodos anteriores, inclusive ao adicionar um campo novo, será preciso alterar um método apenas

public void CarregaCadastro()
{
   txtNome = nome;
   txtIdade = idade;
}


Programar em linguagem Orientada a Objetos,  com programação orientada a objetos, tendo classes com papel bem definidas, onde um objeto é responsável pelas ações sobre ele.
Autor: Sinara Kich
Fonte Micreiros.com