Boas Praticas Programacao
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.
Índice
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.