A formatação e estrutura desse pequeno código está bem feita?

Gujs mais uma vez venho aqui pedir a ajuda e a orientação de vocês, eu sou iniciante em java…
O que eu gostaria de saber se a forma que eu montei o meu código está bem formatado, montagem, sequ~encia de execução do programa e etc.
Sempre programei para web, asp…
Meu contato com java ainda é muito pouco…
O meu código ai abaixo ele cria uma Jtable com alguns label, textfield e botão…
O usuário cadastra alguns dados, quando ele da o click no botão, o programa mostra os dados que foi digitado e grava um txt com aqueles dados…é isso…
Por favor olhem meu código e me digam se estou errando e aonde estou errando ok.
Lembrando que esse código está funcionando.
Aqui eu uso o eclipse, alem de ter testado o programa lógico, o eclipse também vai depurando ele como vocês sabem ok.
Por favor comente.


package txt;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class Grava3 extends JFrame implements ActionListener
{
	//declaração de variáveis String
	public static String vNome = "";
	public static String vIdade = "";
	public static String vEstadoCivil = "";
	public static String vProfissao = "";
	public static String vEmpresa = "";
	
	//declaração da variável do botão
	JButton btEnviar;
	
	//declaração da variável do painel
	JPanel painel;
	
	//declaração de variáveis das label
	JLabel lbNome;
	JLabel lbIdade;
	JLabel lbEstadoCivil;
	JLabel lbProfissao;
	JLabel lbEmpresa;
	
	//declaração de variáveis de imagens para ser usada na label
	ImageIcon img = new ImageIcon("cadastro.gif");
	ImageIcon img2 = new ImageIcon("cadastro2.gif");
	
	//declaração de variáveis de label para ser usada na label
	JLabel lbnull = new JLabel(img);
	JLabel lbnull2 = new JLabel(img2);
	JLabel lbnull3 = new JLabel("");
	
	//declaração de variáveis das caixas de texto
	JTextField txtNome;
	JTextField txtIdade;
	JTextField txtEstadoCivil;
	JTextField txtProfissao;
	JTextField txtEmpresa;
	
	//metodo construtor da classe Grava2
	public Grava3()
	{
		super("Cadastro de Usuário");
	}
	
	//metodo que cria a janela
	public void criaJanela()
	{        
		lbNome = new JLabel("Nome: ",4);
		lbIdade = new JLabel("Idade: ",4);
		lbEstadoCivil = new JLabel("Estado Civil: ",4);
		lbProfissao = new JLabel("Profissão: ",4);
		lbEmpresa = new JLabel("Empresa: ",4);
		
		txtNome = new JTextField("");
		txtIdade = new JTextField("");
		txtEstadoCivil = new JTextField("");
		txtProfissao = new JTextField("");
		txtEmpresa = new JTextField("");
		
		painel = new JPanel();
		painel.setLayout(new GridLayout(10, 2));
		
		btEnviar = new JButton("Cadastrar");
		btEnviar.addActionListener(this);
		
		painel.add(lbnull);
		painel.add(lbnull2);
		
		painel.add(lbNome);
		painel.add(txtNome);
		
		painel.add(lbIdade);
		painel.add(txtIdade);
		
		painel.add(lbEstadoCivil);
		painel.add(txtEstadoCivil);
		
		painel.add(lbProfissao);
		painel.add(txtProfissao);
		
		painel.add(lbEmpresa);
		painel.add(txtEmpresa);
		
		painel.add(lbnull3);
		painel.add(btEnviar);
		
		getContentPane().add(painel, BorderLayout.CENTER);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		pack();
		setVisible(true);        
	}
	
	//aqui pega as informações que forão digitadas nas caixas de texto
	public void actionPerformed(ActionEvent event) 
	{
		//resgatando valores digitados
		vNome = txtNome.getText();
		vIdade = txtIdade.getText();
		vEstadoCivil = txtEstadoCivil.getText();
		vProfissao = txtProfissao.getText();
		vEmpresa = txtEmpresa.getText();
		
		//aqui invoca o metodo que escreve o txt
		try {
			excreveTexto();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//aqui invoca o metodo que mostra os dados em uma caixa de mensagem
		mostra();
	}
	
	//metodo que mostra o que foi digitado em uma caixa de mensagem
	public static void mostra()
	{
		String dados = "";
		dados =  "Nome: "+vNome;
		dados +="\n";
		dados += "Idade: "+vIdade+" anos";
		dados +="\n";
		dados += "Estado Cívil: "+vEstadoCivil;
		dados +="\n";
		dados += "Profissão: "+vProfissao;
		dados +="\n";
		dados += "Empresa: "+vEmpresa;
		JOptionPane.showMessageDialog(null, dados);
	}
	
	//aqui cria o arquivinho txt
	public void excreveTexto() throws IOException
	{
		//escrevendo arquivo
		OutputStream os = new FileOutputStream(vNome+".txt");
		OutputStreamWriter osw = new OutputStreamWriter(os);
		BufferedWriter bw = new BufferedWriter(osw);
		
		bw.write("Nome: "+vNome);
		bw.write("\r\n");
		bw.write("Idade: "+vIdade+" anos");
		bw.write("\r\n");
		bw.write("Estado Cívil: "+vEstadoCivil);
		bw.write("\r\n");
		bw.write("Profissão: "+vProfissao);
		bw.write("\r\n");
		bw.write("Empresa: "+vEmpresa);
		bw.close();
	}
	
	//aqui o metodo principal da classe o metodo main
	public static void main(String args[])throws IOException{
		Grava3 ex2 = new Grava3();
		ex2.criaJanela();
	}
} 

Não terminei de ler, a primeira coisa que posso falar, é sobre os comentarios ates de variaveis e métodos

no lugar de

//metodo construtor da classe Grava2 public Grava3() { super("Cadastro de Usuário"); }
pode-se usar

/** * Construtor do objeto Grava3 */ public Grava3() { super("Cadastro de Usuário"); }

Fazendo dessa forma, vc vai ter a documentação nos métodos, e quando passar o mouse em cima de um método usado, vai aparecer a sua descrição, e posteriormente vc podera se recordar melhor do que fez…

o nome disso em java é JavaDoc, que é a documentação dos seus arquivos

alguém tem mais alguma dica?

Digite ctrl+alt+f para que o eclipse padronize o código automaticamente.

Edit: Ctrl + Shift + F, não?

O indicador de início de bloco também está fora do lugar, não está?
Por exemplo, ao invés de utilizar

public Grava3() 
{    
    super("Cadastro de Usuário");    
}

O padrão não seria

public Grava3() {    
    super("Cadastro de Usuário");    
}   

:?:

O seu método que cria a janela pode ser quebrado em varios pequenos métodos, onde vai deichar sua programação mais OO

por exemplo

public void criaJanela() { intialize(); } private void initialize() { getPanel().add(getLbNull()); getPanel().add(getLbnull2()); getPanel().add(getLbNome()); getPanel().add(getTxtNome()); //.... etc } private JPanel getPanel() { if (painel == null) { painel = new JPanel(); painel.setLayout(new GridLayout(10, 2)); } return painel; } private JLabel getLbNome() { if (lbNome == null) { painel = new JLabel("Nome: ",4); return lnNome; } //.... etc

algo + ou - assim eu acho bem + organizado

outra coisa é que, se vc precisou reescrever um código muito parecido algo esta errado ^^ … veja esse trecho

//... dados = "Nome: "+vNome; dados +="\n"; dados += "Idade: "+vIdade+" anos"; dados +="\n"; dados += "Estado Cívil: "+vEstadoCivil; dados +="\n"; dados += "Profissão: "+vProfissao; dados +="\n"; dados += "Empresa: "+vEmpresa; //... Veja esse outro

//.. bw.write("Nome: "+vNome); bw.write("\r\n"); bw.write("Idade: "+vIdade+" anos"); bw.write("\r\n"); bw.write("Estado Cívil: "+vEstadoCivil); bw.write("\r\n"); bw.write("Profissão: "+vProfissao); bw.write("\r\n"); bw.write("Empresa: "+vEmpresa); //...
e agora veja esse

//... lbNome = new JLabel("Nome: ",4); lbIdade = new JLabel("Idade: ",4); lbEstadoCivil = new JLabel("Estado Civil: ",4); lbProfissao = new JLabel("Profissão: ",4); lbEmpresa = new JLabel("Empresa: ",4); //...

da pra vc melhorar esses métodos

vc poderia ter métodos como

[code]public String getNomeText() {
return getLbNome().getText() + vNome;
}
public String getIdadeText() {
return getLbIdade().getText() + vIdade + “anos”;
}
//… etc

//depois vc pode ou criar um método que cria um string com aquela msg completa
public String getFullMsg() {
return getNomeText() + “\n” +
getIdadeText() + “\n” +
getEstadoCevilText() + “\n” +
getProfissaoText() + “\n” +
getEmpresaText();
}

//depois trocava aqueles dois métodos por algo como

//… public void excreveTexto()
bw.write(getFullMsg());
//…

//… public static void mostra()
dados = getFullMsg();
//…
[/code]

acho que assim fica tudo + organizado, e fica tb mais facil fazer manutenção… vc pode alterar um texto + facilmente

[quote=davidtiagoconceicao][quote]
Digite ctrl+alt+f para que o eclipse padronize o código automaticamente.
[/quote]
Edit: Ctrl + Shift + F, não?

O indicador de início de bloco também está fora do lugar, não está?
Por exemplo, ao invés de utilizar

public Grava3() 
{    
    super("Cadastro de Usuário");    
}

O padrão não seria

public Grava3() {    
    super("Cadastro de Usuário");    
}   

:?: [/quote]

Se não me engano isso depende do estilo de código. Pelo que me lembro, o primeiro está no padrão “Allman” e o segundo no padrão “BSD KNF”, e eu particularmente prefiro o primeiro, acho mais importante saber onde estão os blocos, o código-fonte pode ficar com muitas linhas mesmo… Acho que o estilo “Allman” deve ser o estilo usado por bastante tempo na IBM, já que ouvi falar que por lá antigamente media-se a performance dos desenvolvedores por linhas de código…

Inté.

Kwil vc está certo. O comando que padroniza o código é ctrl+shift+f
Desculpem o erro…