Plano de Projeto

Propaganda
SCRIPT PARA REVISÃO DE FONTES JAVA E FLEX
Data: 08/11/2010
Versão: 1.0
ASSUNTO: Script de Revisão de fontes
Procedimento para revisão de fonte
 As OS para revisão de fontes serão enviadas para a fila Java com o serviço DES-REVISÃO DE
FONTES, sendo um item para o serviço anterior e outro para DES-COMPILAÇÃO.
 Revisores: Gualberto, Rodrigo, Leandro, Héliton e Cristian.
 Telas de complexidade baixa ou pequenas correções de erros não há necessidade de revisão
de fontes.
 Telas que possuem um orçamento acima de 60 horas devem ser revisadas antes, com uma
verificação em 50% concluída.
 Para telas acima 120 horas e complexidade alta deverá ser revisada em partes ou módulos
de forma que facilite a revisão.
 Todas as telas dos programadores iniciantes deverão ser revisadas.
 A revisão de fonte será monitorada pelo gerente de projetos.
 Este documento poderá ser atualizado pelos membros da equipe, desde que haja consenso,
devido suas necessidades.
Revisão de fonte Java
1) Os nomes de classes, variáveis e métodos estão refletindo a realidade do que elas representam?
Os nomes devem ser grandes o bastante para expressar de maneira adequada o que ele
representa
Evite nomes muito grandes ou muitos curtos.
Evite abreviações desnecessárias.
2) O escopo das variáveis estão bem definidos, como segue:
Variáveis que estão como atributos de classe precisam realmente ser atributos de classe?
Variáveis locais estão inicializadas de maneira correta e não estão sendo reaproveitadas para
valores que não representem seu nome?
3) O código está limpo sem excesso de comentários ou trechos de código comentados?
Script de revisão Java e Flex
Versão 1.0
1/6
SCRIPT PARA REVISÃO DE FONTES JAVA E FLEX
Data: 08/11/2010
Versão: 1.0
ASSUNTO: Script de Revisão de fontes
4) Existem uma linha em branco sempre que o código muda de "assunto" (evite código”linguição”!)
5) Os métodos possuem um número de linhas adequado? Nem muito grande nem muito pequeno?
6) Os métodos privados excessivamente pequenos e que são usados em poucos lugares, não
devem ser usados, pois podem deixar uma leitura de difícil entendimento.
7) Os métodos públicos devem ser evitados sempre que possível. Apenas os métodos que
representam a interface pública de uma classe devem ser públicos.
8)
Evite
métodos
GETTER/SETTER
desnecessários.
Apenas
atributos
que
configuram
o
comportamento da classe devem possuir SETTER e apenas atributos que possam realmente ser
usados pelo código chamador devem ter um GETTER definido.
9) Classes que possuem um nível de configuração complicado devem usar classes auxiliares de
configurações e métodos de construção (Build) apropriados.
8) EVITE CÓDIGO REPETIDO. Ao invés de copiar e colar grandes blocos de código crie classes
auxiliares (Helpper) e isole a funcionalidade para reaproveitamento sempre que possível.
10) Evite excesso de flags e booleanos de controle, eles são complicados de manter.
11) As classes de EJB que usam métodos transacionais possuem código de ROLL-BACK adequado?
12) As conexões e sessões JAPE estão sendo abertas e fechadas adequadamente?
13) Métodos que usam transação manual estão usando as técnicas e classes adequadas ?
14) As consultas feitas de maneira nativa (SQL nativo) estão usando o NativeSQL ?
15) A passagem de parâmetros para o NativeSQL está usando NamedParameters ?
16) As consultas embarcadas (SQL) muito longas estão sendo escritas em arquivo separado
(.SQL)?
17) A sintaxe SQL usada está considerando os dois BDs suportados pelo sistema? As macros do
JAPE podem ajudar?
18) As consultas que são usadas dentro de loops estão usando NativeSQL configurado de tal forma
que o Statement seja reaproveitado?
19) A solução criou muitas classes? São realmente necessárias tantas classes ou interfaces?
20) O nível de complexidade do código está aceitável ? Quando você olhar pra esse código daqui a
seis meses, você vai entender o que ele faz?
Script de revisão Java e Flex
Versão 1.0
2/6
SCRIPT PARA REVISÃO DE FONTES JAVA E FLEX
Data: 08/11/2010
Versão: 1.0
ASSUNTO: Script de Revisão de fontes
21) Listeners de entidade são executados sempre que houver mudanças na entidade independente
de onde elas ocorreram, portanto deve-se tomar cuidado para que a regra imposta no listener
possa ser executada sem problemas em todos os casos.
22) Está passando parâmetros para listeners usando JapeSessionContext ou JapeSession? Prefira
JapeSession.
23) Prefira trabalhar com null ao invés de strings vazios.
24) Nunca confie no banco de dados, o que é verdade em uma base não é verdade em outra.
25) NUNCA, JAMAIS, criar atributos de classes em EJBs do tipo Stateless (com excessão de
SessionContext) ou em classes de Servlets.
26) Padrão de fontes:
* Sempre usar o formatador de fontes do Eclipse usando o nosso padrão.
* Sempre usar o CTRL-O para organizar os imports.
* Não deixar trechos de código comentados sem necessidade.
27) Utilizar bem os comentários: coloque-os em trechos mais complexos e retire-os de trechos
óbvios.
28) Não deixar objetos sem referência e não reaproveitar referências de objetos.
Por exemplo:
Object obj1 = new Object();
Object obj2 = new Object();
obj1 = obj2;
29) Não programar no estilo procedural em uma linguagem orientada a objetos.
30) Não criar classes gigantes que façam tudo. Sempre que possível quebrar em tarefas menores e
preferencialmente que possam vir a ser reutilizadas.
31) Geralmente nomes de métodos possuem verbos e nomes de variáveis e atributos são
substantivos.
32) Não capturar exceções específicas, a não ser que elas tenham um tratamento diferenciado.
33) Não colocar as constantes em uma classe ou interface separada, elas devem ser colocadas em
classes cujo contexto faça sentido.
Script de revisão Java e Flex
Versão 1.0
3/6
SCRIPT PARA REVISÃO DE FONTES JAVA E FLEX
Data: 08/11/2010
Versão: 1.0
ASSUNTO: Script de Revisão de fontes
34) Evitar lançar exceções nos construtores de classes.
35) Se foi criado um serviço, verificar o request e o response.
No request deve-se ter atenção a parâmetros requeridos (Evitando NPE).
No response deve-se tomar cuidado com a estrutura para que não fique extensa.
36) Observar nos códigos se não foi feita duplicação de códigos que já existam em Helpers ou
Utils.
37) Evitar estruturas complexas Java ou Flex (como ENUM) desnecessariamente só para dizer que
a Sun não criou atoa.
38) Evitar códigos performáticos por demais e inatendíveis por de menos. Por exemplo, foi criado
um código muito problemático para ganho de performance, mas a sua manutenção ou
entendimento é incompreensível.
39) Todas as rotinas "genéricas" estão separadas em métodos?
Eventualmente um trecho de código pode ser reutilizado no futuro (mesmo que não esteja
sendo atualmente). Por isso, é uma boa prática separá-lo em um método da classe ou
mesmo um método utilitário.
40) A persistência é executada através do Jape? Persistência manual (direto pelo jdbc) deve ser
evitada.
41) Há utilização de componentes/métodos depreciados?
42) Manipulação de XML é feita com ajuda do XMLUtils?
Utilizar os métodos da classe XMLUtils para evitar verificações de nullPoiter excessivas.
Revisão de fonte Flex
1) Atributos privados de classe devem começar com
_
2) Atentar para as chamadas de serviço, pois elas são assíncronas.
3) Evitar arquivos .mxml grandes, pois fica difícil a leitura. Além disso, o Flex Builder tem
dificuldade em parsear e algumas funcionalidades param de funcionar (syntax highlighting e code
assist).
4) Applications e Modules devem ser colocados diretamente na pasta
Script de revisão Java e Flex
Versão 1.0
src do projeto.
4/6
SCRIPT PARA REVISÃO DE FONTES JAVA E FLEX
Data: 08/11/2010
Versão: 1.0
ASSUNTO: Script de Revisão de fontes
5) Componentes visuais, mesmo que implementados em .as, devem ser possíveis/fáceis de serem
utilizados no .mxml.
6) Dê preferência aos nossos componentes (SanTree, SanPopUp, DefaultSankhyaApplication,
ConfigurableDataGrid) ao invés dos equivalentes nativos do Flex.
7) Constantes devem ser const e não var. Além disso, devem ser nomeadas em caixa alta.
8) Evitar o uso de [Bindable], pois na maioria das vezes não funcionam como esperado.
9) Sempre que for criar um componente novo, fazer um post explicativo no blog.
10) Observar a utilização de 'this' dentro de closure, pois ele não se refere à classe externa.
11) Evitar aninhamento de closures.
12) Evitar carregar campos desnecessários no DBDataSet.
13)
Remover
imports
desnecessários
nas
classes,
pois
o
Flex
Builder
não
faz
isso
automaticamente.
14) Imagens e outros recursos devem ser colocados em pastas 'assets'.
15) Dados numéricos não assumem valor null e sim NaN (Not a Number).
16) Quando for utilizado regex, verificar se os flags (g, i, etc.) foram utilizados corretamente.
17) Verificar NPE em componentes como ViewStack, TabNavigator e Accordion, cujos filhos são
construídos de maneira "lazing".
18) Evitar que o conteúdo fique "grudado" no container, definindo paddings no container.
19) Antes de acessar uma propriedade de um objeto dinâmico, utilizar o método hasOwnProperty
para certificar-se que o objeto possui tal propriedade.
20) O DataSet recebe critérios estáticos através de Critéria provider?
21) A aplicação anula o método DefaultSankhyaApplication.loadByPk corretamente?
Carga inicial do DataSet deve ser feita por este método, pois o ambiente tentará carregar
um registro através deste mecanismo. Para resolver o problema da sincronização entre a
carga de metadados do dataset e a carga de dados, utilizar a classe utilitária
"PKCriteriaLoader" que faz a sincronização pelo método "refreshDataset".
22) Controle de acesso é feito pelo DefaultSankhyaApplication?
23) As colunas do Datagrid são criadas manualmente (quando não é Dynaform)?
Script de revisão Java e Flex
Versão 1.0
5/6
SCRIPT PARA REVISÃO DE FONTES JAVA E FLEX
Data: 08/11/2010
Versão: 1.0
ASSUNTO: Script de Revisão de fontes
24) O layout da tela compreende todos os componentes padrões (quando não é Dynaform):
PersonalizedFilter, GridConfig, GridPrinter, etc.?
25) Duplo click do grid coloca o DoubleFacePanel em modo formulário?
26) Controle de acesso está sendo respeitado (quando não é Dynaform)?
27) Os pop up’s criados pela aplicação usam SanPopUp?
Script de revisão Java e Flex
Versão 1.0
6/6
Download