Olá pessoal,
Mais uma vez a Java Code Conventions me mostra um caminho que parece ser aquele caminho do inferno… :twisted: mas tenho certeza que, como na última vez que questionei determinado ponto da JCC, vou já já descobrir que esse caminho para o inferno é na verdade o caminho para os céus! :-o
Eis a questão:
[quote][size=16]6 - Declarations[/size]
…
[size=14]6.2 Placement[/size]
[size=12]Put declarations only at the beginning of blocks. (A block is any code surrounded by curly braces “{” and “}”.) Don’t wait to declare variables until their first use; it can confuse the unwary programmer and hamper code portability within the scope.[/size]
[code]void MyMethod() {
int int1; // beginning of method block
if (condition) {
int int2; // beginning of "if" block
...
}
}[/code]
[size=14]6.3 Initialization[/size]
[size=12]Try to initialize local variables where they’re declared. The only reason not to initialize a variable where it’s declared is if the initial value depends on some computation occurring first.[/size][/quote]
:arrow: É uma coisa que não consigo compreender: imagine que você está desenvolvendo formulários com o Swing e este formulário tem mais de 60 JTextField, 10 JComboBox, 15 JButtons, 7 JCheckBox e X etc’s…
Se pela convenção devo declarar essas variáveis locais logo no início do método, quando estiver inicializando as mesmas ou alterando as configurações de alguma delas, lá no meio do código deste mesmo método, sou obrigado a ir lá para o alto, verificar qual é o nome da variável, voltar lá para o meio do código e então fazer a modificação necessária. Não seria mais conveniente ir declarando os componentes conforme vou adicionando eles ao JPanel do formulário ao invés de ter que ficar indo e voltando toda hora no código, como manda a convenção? Não é mais legível ir declarando aos poucos, ou seja, em seu primeiro uso? E quanto a portabilidade, a mesma coisa: quanto mais próximas estiverem as declarações das váriaveis de suas modificações, mais portável fica determinados trechos do código, não?
Para ilustrar:
[code]
public void criarForm() {
JPanel p = new JPanel();
p.add(new JLabel("Primeiro Nome:"));
JTextField nome = new JTextField(50);
p.add(nome)
p.add(new JLabel("Sobrenome:"));
JTextField sobrenome = new JTextField(100);
p.add(sobrenome);
p.add(new JLabel("Data Nascimento:"));
JFormattedTextField dataNasc = new JFormattedTextField("##/##/####"));
p.add(dataNasc);
...
}
[/code] Veja como o código é estupidamente legível. Tenho a variável do painel declarado logo de cara, como manda Code Conventions. Porém, os JTextField`s e JFormattedTextField declaro no seu primeiro uso. No exemplo temos três componentes sendo adicionados. Agora imaginem se fossem 8356 componentes sendo que todas as declarações de variáveis estariam logo alí em cima junto com a declaração do painel. Quando estiver lá na linha 6340 como vou me lembrar o nome da variável declarada? Vou ficar fazendo um vai e volta no código de cima para baixo sem parar, o que é horrivel tanto para legibilidade quanto para portabilidade futura deste código.
:idea: AGORA DEIXO EM ABERTO A OPINIÃO DOS SENHORES: ESTOU COM A RAZÃO OU DEVO IR MESMO PULAR O CARNAVAL? :roll:
Não deixe de opinar, pode parecer uma baita besteira, mas é importante, ainda mais nos dias de hoje que os códigos parecem ser escrito seguindo a JAVA CODE “INCONVENTIONS”!
Forte abraço leitor.