Boas Práticas

De LEDES

Tabela de conteúdo

Discussões Periódicas

Discussões periódicas podem ocorrer 1 ou 2 vezes na semana e são reuniões na qual cada membro da equipe responde às seguintes perguntas:

  • O que fiz desde a última discussão?
  • O que estou planejando fazer até a próxima?
  • Existe algo me impedindo de atingir minha meta?

Um momento bom para as discussões periódicas é depois do almoço. Durante a manhã pode ser complicado. Estas discussões de status não demoram e uma forma eficiente de fazer estas reuniões seria ficar em pé e em frente a um quadro negro. Como as pessoas tendem a ficar cansadas depois do almoço, ter uma viva reunião em pé nessa hora permite que a equipe mantenha a sua energia alta. Como todo mundo tem trabalhado durante o dia, suas mentes estão focadas no trabalho e não em questões pessoais.

  • Todos os membros do projeto devem propor e criticar as soluções.
  • Problemas não são ignorados e ninguém é penalizado por reconhecer ou descrever qualquer problema não visto.
  • Deve-se valorizar a produção e não simplesmente as "horas de trabalho".
  • No desenvolvimento, deve-se valorizar o "como foi feito" e não simplesmente o "o que foi feito".
  • O foco deve ser na criatividade. Os membros devem saber achar soluções e caminhar com as próprias pernas.

Convenção de Código

Esta seção especifica uma proposta de convenção de código para ser utilizada em todos os projetos do LEDES. A convenção de código é importante por uma série de motivos:

  • 80% do custo de tempo de vida de um artefato de software está na manutenção.
  • Dificilmente o autor do software será responsável pelo sua manutenção durante todo o tempo de vida.
  • Convenções facilitam a leitura do código, permitindo a outros programadores e aos gestores entender novos códigos de forma rápida e completa.
  • Se o projeto for vendido como um produto, você precisa garantir que seu código estaja limpo e conciso.

A Convenção de Código oficialmente adotada no LEDES normaliza que:

  • Sempre se utilize nomes de variáveis, funções, classes e demais entidades em inglês.
  • Sempre se utilize Camel Case (myVar) para variáveis locais.
  • Sempre se utilize Pascal Case (MyClass) para nomes de classes.
  • Sempre se utilize Upper Case (MY_VAR) para variáveis globais.
  • Sempre se utilize Upper Case entre underlines (_MY_CONST_) para constantes.
  • Sempre se utilize Orientação a Objetos.
    • Se você não possui fluência em programação OO no PHP, devore este material antes de começar: Classes e Objetos (PHP 5)
  • Se procure manter funções pertinentes dentro das classes (mesmo que sejam static).
  • Sempre utilize final para constantes em Java.
  • Sempre se quebre linha:
    • Após ponto-e-virgula;
    • Antes de um operador;
    • Antes de abrir chaves (escopo).
  • Sempre se feche artefatos de software na mesma coluna ou na mesma linha em que foram abertos.
  • Sempre se use tabulação em vez de espaços para identar.
  • Utilize-se linhas em branco:
    • Entre funções e métodos;
    • Entre classes;
    • Entre expressões com variáveis distintas.
  • Em todos os arquivos deve-se utilizar o padrão de cabeçalhos e comentários especificado pelo DoxyGen.
  • Sempre se utilize Design Patterns.
  • Jamais utilize-se Deprecated Elements.

Adaptado de Code Conventions for the Java Programming Language.

Também define-se o seguinte padrão para sistema e hierarquia de arquivos:

PHP

  • No servidor de desenvolimento:
    • Desabilite o parâmetro zend.ze1_compatibility_mode;
    • Habilite o parâmetro safe_mode;
    • Desabilite o parâmetro register_globals
  • Não use funções deprecateds (como session_register);

Java: Web Application

Java: WebServer

Java: OffLine Application

Banco de Dados

A Convenção de Código oficialmente adotada no LEDES normaliza que:

  • Sempre se utilize nomes de entidades em inglês.
  • Sempre se utilize nomes em Lower Case, separados por underline.
  • Sempre se utilize esquemas (não public) nos BDs.
  • Sempre utilize nomes de tabelas e outras entidades no singular.
  • Separe através do uso de schemas as entidades de acordo com o contexto no sistema.

Teste