Qualidade do código

Bom, estava aqui fazendo uns exercícios (um programa simples para armazenar informações de funcionários), e reparei que fiz o seguinte código:

[code]package main;
import comum.Funcionario;
import java.util.Scanner;

public class TestaFuncionarioVetor {

public static void main(String[] args) {
	Scanner input = new Scanner(System.in);
	
	String nome, cargo;
	int matricula, percentualDesconto;
	double salarioBruto;
	
	Funcionario funcVetor[] = new Funcionario[10];
	
	for (int i = 0; i < 10; i++){
		
	
		System.out.println("Digite o nome: ");
		nome = input.next();
	
		System.out.println("Digite a matrícula: ");
		matricula = input.nextInt();
		
		System.out.println("Digite o cargo: ");
		cargo = input.next();
	
		System.out.println("Digite o salario bruto: ");
		salarioBruto = input.nextDouble();
	
		System.out.println("Digite o percentual de desconto: ");
		percentualDesconto = input.nextInt();
		
		Funcionario func = new Funcionario (matricula, percentualDesconto, nome, cargo, salarioBruto);
		
		funcVetor[i] = func;
		
		
	}
	
	for (int i = 0; i < funcVetor.lenght; i++){
		funcVetor[i].exibirDados();
	}
}

}
[/code]

Ele condiz com o que me foi ensinado, mas tem algo que acho estranho nele:
Antes do primeiro for, eu crio várias variáveis para armazenar as informações do funcionário. Dentro do for, eu uso essas variáveis, e depois eu crio um objeto do tipo Funcionario passando essas variáveis para o construtor (sobrecarregado), e depois eu atribuo esse objeto ao campo correspondente do vetor.
Ao meu ver, tem uma "ineficiência" do código aí. Não seria melhor eu criar o objeto (com o construtor padrão) no início do for, depois ir alterando os valores desse objeto, e depois passá-lo para o vetor? Dessa forma:

[code] for (int i = 0; i < 10; i++){

		Funcionario func = new Funcionario ();
		
		System.out.println("Digite o nome: ");
		func.setNome(input.next());
	
		System.out.println("Digite a matrícula: ");
		func.setMatricula(input.nextInt());
		
		System.out.println("Digite o cargo: ");
		func.setCargo(input.next());
	
		System.out.println("Digite o salario bruto: ");
		func.setSalarioBruto(input.nextDouble());
	
		System.out.println("Digite o percentual de desconto: ");
		func.setPercentualDesconto(input.nextInt());
		
		funcVetor[i] = func;
	}[/code]

Se precisarem de mais informações sobre o código ou a classe Funcionario, eu posso postar aqui.
Qual dos dois códigos é melhor?

E me avisem se eu estiver fazendo algo errado nos códigos!

Eai marcio0…

Você teve a dúvida e logo arrumou uma solução melhor.
O segundo código poderia ser uma outra solução sim, talvez até menos custoso. Contudo, nessa situação, acho que a máquina não seria influenciada em questão de desempenho, pois são poucas variáveis e criadas uma só vez.
Mas acho que é bom manter esse pensamento… :smiley:

Abraços!