Wiki
Convenção desenvolvedor/Convenção código/Organização de arquivos
Organização de arquivos #
Um arquivo consiste de seções que devem ser separadas por linhas em branco e um comentário opcional identificando cada seção.
Arquivos maiores que 2.000 linhas são “inconvenientes” ou “deselegantes” e devem ser evitados.
Arquivos de fontes do Java #
Cada arquivo fonte Java contém uma única classe pública ou uma interface. Quando classes privadas e interfaces são associadas a uma classe pública, você poderá colocá-las em um mesmo arquivo fonte. A classe pública ou a interface deverá ser a primeira no arquivo.
Arquivos fontes Java possuem a seguinte ordem:
- comentários iniciais (opcional);
- instruções de pacotes e importações;
- declarações de classes e interfaces.
Comentários iniciais #
Todos os arquivos fontes deverão começar com um comentário estilo linguagem C que lista o nome da classe, versão e notas de direitos autorais.
No caso específico do Demoiselle, os arquivos com extensão .java (fonte Java) e outros arquivos próprios do projeto (.xml, .properties, etc...) devem ser iniciados com o texto a seguir:
Demoiselle Framework Copyright (C) 2012 SERPRO ---------------------------------------------------------------------------- This file is part of Demoiselle Framework.* Demoiselle Framework is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 as published by the Free Software Foundation.* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.* You should have received a copy of the GNU Lesser General Public License version 3 along with this program; if not, see http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ---------------------------------------------------------------------------- Este arquivo é parte do Framework Demoiselle.* O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação do Software Livre (FSF).* Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português para maiores detalhes.* Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título "LICENCA.txt", junto com esse programa. Se não, acesse http://www.gnu.org/licenses/ ou escreva para a Fundação do Software Livre (FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
Note que o ano deve ser preenchido de acordo com a data atual (“2012” no exemplo citado). Recomenda-se a configuração prévia do ambiente integrado de desenvolvimento (IDE) para a inclusão automatizada deste texto durante a criação de novo arquivo de fonte.
Instruções de pacote e importações #
A primeira linha sem comentários na maioria dos arquivos de fontes Java é uma instrução de definição do pacote (i.e. package). Depois disso seguem as instruções de importações (i.e. import). Por exemplo:
package br.gov.frameworkdemoiselle.stereotype; import br.gov.frameworkdemoiselle.stereotype.BusinessController; import br.gov.frameworkdemoiselle.stereotype.ViewController;
Declarações de classe, interface, enumeração e anotação #
A tabela seguinte descreve as partes existentes na declaração de uma classe, interface, enumeração ou anotação na ordem em que as primeiras devem aparecer.
### | Parte da declaração | Observações | |
---|---|---|---|
1 - | Comentários iniciais de documentação (/../) | Deve conter uma descrição simplificada do componente, no formato de Javadoc. | |
2 - | Palavra-chave class, interface,@interface ou enum | Nesta linha deverão aparecer as palavras chave extends e ou implements que definem a hierarquia do componente. | |
3 - | Variáveis de classe (static) | Primeiramente as variáveis públicas (public) da classe, então as protegidas (protected) e finalmente as privadas (private). | |
4 - | Variáveis de instância (atributos) | Primeiro variáveis public, então protected e finalmente private. | |
5 - | Inicializações estáticas | Este código será executado apenas uma vez durante o carregamento da classe pela Máquina Virtual do Java. | |
6 - | Métodos construtores | Primeiro o construtor padrão (se existente), e em seguida os demais construtores na ordem de complexidade destes (i.e. quantidade de argumentos). | |
7 - | Métodos convencionais | Os métodos devem ser agrupados pela funcionalidade de preferência pelo escopo ou acessibilidade.Por exemplo,um método privado de uma classe pode estar entre duas instâncias de métodos públicos.O objetivo é tornar a leitura e o entendimento do código algo simples. | |
8 - | Classes internas (inner classes) | Declaração das classes internas. |