Boas Praticas Programacao

De MSTECH wiki
Ir para: navegação, pesquisa

Esta página serve com uma referência para a convenção de código e consulta para eventuais divergências entre modelos adotados na MSTECH.


Utilizando camelCasing e PascalCasing

Os projetos em .Net na MSTECH devem adotar o padrão de maiúsculas criados pela equipe da Microsoft.

camelCasing

O camelCasing consiste em tornar maiúscula todas as primeiras letras das palavras com exceção da primeira palavra.

EX: camelCasing, existeTitulo, idEscola ...

Utilize este padrão para variáveis e parâmetros. Quando a variável ou parâmetro possuir um acrônimo, utilizar as duas primeiras letras também minusculas.


PascalCasing

O PascalCasing consiste em tornar maiúscula toda primeira letra das palavras.

Ex: SalvarUsuario() e LoginExterno ...

Utilize este padrão para nome de métodos e propriedades de uma entidade.

Exemplos

Identificador Caso Exemplo
Namespace Pascal namespace System.Security { ... }
Tipo Pascal public class StreamReader {...}
Interface Pascal public interface IEnumerable {...}
Método Pascal public class Object{ public virtual Length{ get; } }
Propriedade Pascal public class Process {public event EventHandler Exited;}
Campo Pascal public class MessageQueue {public static readonly TimeSpan InfiniteTimeout;} public struct UInt32 { public const Min = 0; }
Valor do Enum Pascal public enum FileMode { Append,...}
Parâmetro Camel public static int ToInt32(string value);


Criação de nomes

O objetivo é normalizar a criação de nomes para variáveis, tipos, métodos...

Regras gerais

  • O projeto deve ser desenvolvido utilizando uma linguagem ubiquá.
  • Crie variáveis e métodos com nomes claros e não extensos.
  • Não utilize nomes genéricos. Exemplo: var teste;
  • Não utilize acentos nos nomes.
  • Evite criar nomes que denotem negação. Exemplo: bool usuarioNaoInscrito = true; if(!usuarioNaoInscrito){...}

Variáveis

  • Utilize camelCasing.
  • Recomendado o uso de plural para variáveis que armazenem coleções.
  • Recomendado a utilização de sufixos para booleanos. Exemplo : bool emEdicao = false;

Métodos, classes e interfaces

  • Utilize PascalCasing.
  • Utilize o prefixo I para Interfaces.


Comentário

Os comentários em código devem ser mínimos. O seu próprio código deve ser auto descritivo. Quando nos deparamos com um código que precisa de muito comentário para explicar o seu funcionamento, reveja a forma como está a lógica deste código, tente separar em partes menores, com métodos que possuam nomes claros, inteligíveis e que executem ações específicas.

Os comentários devem sofrer manutenção assim como o código, para que eles não atrapalhem um novo membro da equipe a entender o que está ocorrendo no código.

"Não insira comentários num código ruim, reescreva-o." Brian Kernighan e P.J. Plaugher.

"Uma das motivações mais comuns para criar comentários é um código ruim." Robert C. Martin.

Comentários no código

Boa prática:

  • Comentário em parâmetros retornados por programas externos (API's, por exemplo).
  • Destacar a utilização de um método importante que pode parecer desnecessário.
  • TODO: Existem casos onde adicionar comentários TODO facilitam para a revisões de código.

Evite:

  • Comentar trechos de código: Deixe que o versionamento de código faça isto por você.

/* não apague!!!!!! */

  • Para parâmetros ou métodos auto explicativos.

// Nome

string nome;

  • Explicações desnecessárias.

// Esta é melhor solução que o Fulano tentou, não sei se ele pesquisou a página XYZ.com

  • Explicações longas

// Este método irá realizar uma comparação para contas de usuário que estão aptos a realizar um curso

// Os cursos que este usuário irá participar deverão estar como status 1 
// As turmas dos cursos tem um tutor com o status igual a 19 
// Os cursos tem que iniciar em setembro e não podem começar com a letra N
// Parece que os usuários que vao fazer o curso não estão com notas no módulo B 
// Todos os cursos tem que fazer parte no ano letivo atual 
// não podem ser semestrais, pois os alunos tem inscrição anual 
// Os cursos tem vídeo: verificar se o usuário tem acesso a pagina de videos 
// Os cursos tem Flash: e quando não tiver suporte pra flash ?
public void EnrollUser(){...}

Sumário

Adicionar Summary auxilia o desenvolvedor que irá consumir este método orientando sobre a finalidade, parâmetros e retorno.

Para API's públicas, o sumário é muito importante, pois provê informações para a construção de helpers.