MANUAL DE NORMAS PARA DESENVOLVIMENTO DE CÓDIGO DA FÁBRICA VIRTUAL DE SOFTWARE DA FIPP Curso Superior de Tecnologia em Sistemas para Internet 2/2014 1. Nomes e localização dos arquivos do projeto: O template do projeto está organizado conforme a estrutura abaixo. Camada de Dados: Fornece recursos para persistência de dados em diversos meios. Normalmente oferece suporte para execução de instruções SQL em banco de dados relacional e mapeamento objeto-relacional. Camada de Negócios: Implementação das classes que contemplam a regra de negócio do sistema. As classes desta camada devem implementar métodos que fazem acesso a camada de dados, tendo como objetivo a persistência e recuperação de dados. Alguns destes métodos podem retornar objetos de seu próprio tipo, como também uma lista de objetos e em alguns casos um objeto DataTable. A camada de negócios atua como uma interface de comunicação entre a camada apresentação (site) e a camada de dados. Camada de Entidades: Implementação das classes que representam as entidades do sistema. Nestas classes somente devem existir atributos, propriedades e métodos get/set, métodos construtores e destrutores, e como também os relacionamentos/associações com as outras classes. Camada de Apresentação (Site): Implementações das interfaces do usuário (páginas). As classes de interface devem estabelecer sua comunicação diretamente com as classes da Camada de Negócios, recuperando objetos e dados através dos métodos oferecidos. Camada de Interface (site) Camada de Entidades Camada de Negócios Camada de Dados
2. Nome de classes: Todos caracteres iniciais que formam o nome da classe ficam maiúsculo. NomeDaMinhaClasse Pessoa RecursoInterno 3. Nome de atributos: Inicia o nome do atributo com o caractere _ e o caractere inicial da primeira palavra é minúsculo. Todos os outros caracteres inicias ficam em maiúsculo. _id _nome _datanascimento 4. Nome de métodos e propriedades: Todos os caracteres iniciais das palavras que formam o nome do método e/ou propriedade ficam maiúsculos. O nome dos métodos devem obrigatoriamente iniciar por verbos no infinitivo. Métodos Recuperar() Fazer() SalvarPessoa() Propriedades Id Nome DataNascimento 5. Nome dos parâmetros dos métodos, declaração de variáveis e objetos: O primeiro caractere da primeira palavra é minúsculo. Os outros caracteres iniciais ficam em maiúsculo. Metodo (string id, string numerotelefone, DateTime datanascimento, bool ativo) string nomedavariavel; 6. Indentação Quebra de linha: Quando uma expressão/linha de código não couber em uma única linha, a quebra pode ser feita após alguma vírgula, ou após um operador.o alinhamento da nova linha deve acontecer com o início da expressão do mesmo nível sobre a linha anterior. Exemplos: var = a * b / (c - g + f) + 4 * z; MetodoComNomeMuitoLongo(expressao1, expressao2, expressao3, expressao4, expressao5); 7. Espaços em branco: Sempre utilizar caracteres de tabulação (tecla TAB) e nunca espaços em branco.
8. Comentários: Quando for necessário utilizar os comentários do bloco o seguinte estilo deve ser usado: Instrução 1; Instrução 2; /* Linha 1 * Linha 2 * Linha 3 */ Instrução 3; Instrução 4; E sempre utilize quebra de linha entre o comentário e a linha de código. O comentário de linha única (//) deve ser utilizado para também comentar seções de código. O comentário deve ser recuado para o nível do código que vai ser explicado, e o comprimento não deve exceder o comprimento do código. //Comentário Instrução 1; No.Net Framework, a Microsoft introduziu um sistema de geração de documentação com base em comentários XML (///). Estes comentários são formalmente de linha única. /// <summary> /// Esta classe /// </summary> public class MinhaClasse 9. Declarações 9.1. Variáveis: Uma declaração de variável por linha é recomendada uma vez que incentiva comentários. string nome; //Nome da pessoa int idade; //Idade da pessoa A inicialização de variáveis é uma boa prática a considerar. string nome = ; //Nome da pessoa int idade = 0; //Idade da pessoa
9.2. Classes e interfaces: Regras para formatação de classes e interfaces em C#. Não há espaço entre um nome do método e o parêntese "(" iniciar a sua lista de parâmetros; A chave de abertura "" aparece na linha seguinte, após a instrução de declaração; A chave de fechamento "" inicia uma linha por si só recuado para coincidir com a abertura correspondente da chave de abertura. class MeuExemplo : MinhaClasse, IMinhaInterface int _varint; public MeuExemplo(int varint) this._varint = varint; void Inc() this._varint++; void MetodoVazio() 9.3. Retorno: A instrução return não deve usar parênteses. return n * (n + 1) / 2; 9.4. If, if-else, if else-if else: Declarações if, if-else, if else-if else devem ficar assim: if (condicao) FacaAlgo(); if (condicao) FacaAlgo(); else FacaOutraCoisa(); if (condicao) FacaAlgo(); else if (condicao) FacaOutraCoisa(); else FacaOutraCoisaNovamente();
9.5. For / Foreach: A instrução for deve ter seguinte forma: for (int i = 0; i < 5; ++i) 9.6. While/do-while: A instrução while deve ser escrita como segue: while (condition) Uma instrução do-while deve ter a seguinte forma: do while 9.7. Switch: A instrução switch deve ter de forma a seguir: switch (condicao) case A: break; case B: break; default: break; 9.8. Try-catch try catch (Exception) ou try catch (Exception e)
finally 10. Usabilidade e Navegabilidade Janela estilo popup: Uso de janela estilo popup em páginas de pesquisa, páginas de ajuda, áreas de detalhes, etc. Dica: fancybox ou ASP.NET AJAX ModalControlPopup. AJAX: O uso da tecnologia AJAX para minimizar o efeito do submit. JQuery: Para construção de efeitos na interface do usuário. Validação da entrada de dados: Padronização nas mensagens de validações em campos de formulários de entrada de dados. Toda validação deve ocorrer no cliente e no servidor. 11. Diagramas da UML Todos os diagramas da UML devem ser construídos utilizando a ferramenta ASTAH Community.