Trabalhando com Data em Java

Manipular datas em Java sempre foi um trabalho complicado para os iniciantes e até para os experts, ainda porque muitos métodos da classe java.util.Date já estão depreciados na versão 1.6 e ainda assim não oferece todas as funcionalidades necessárias.

A classe Calendar é utilizada para suprir essas necessidades, tornando possível manipular dias, meses, anos e até segundos.

Continuar lendo

Boas práticas de Programação…

Boas práticas para retornar null ou lista vazia

Quando seu método necessita retornar uma Collection, retorne uma lista vazia ao invés de um objeto nulo.*

Isso evita IF desnecerssários (NullPointerException) e possibilita melhor leitura do seu código.

Não se preocupe em verificar se a lista está vazia, list.size() > 0, o FOR já se encarrega disso.

*Effective Java (2nd Edition)

Boas práticas de Programação…

Boas práticas para comentários

Evite comentários óbvios.  Seu código deve ser auto explicativo, use nomes de variáveis e métodos que representam exatamente o que significam.


// Busca o pais de origem do usuario
String pais = buscarPaisPorIP(ip);

// Verifica se o pais de origem eh o BRASIL
if(pais.equals("BR")
return "Brasil!";

Java – Modificadores de acesso

Os famosos modificadores de acesso em Java são palavras-chave que modificam a forma de como podem ser acessadas as classes, os métodos ou suas variáveis.

Entre eles temos o public, private protected.

Public – Tudo e todos o conhecem

O modificador public faz com que a classe, método ou variável esteja disponível (visível) para tudo e todos do sistema em qualquer momento da execução. Basicamente esse elemento pode ser alterado por qualquer outra classe não importando qual seja e em qual pacote esteja.

Private – Restrição total

O private é exatamente o inverso do public. O membro que for declarado como private poderá ser acessado apenas por sua própria classe.

Normalmente as variáveis private para serem lidas (get) ou alteradas (set) por outras classes do sistema implementam os métodos Gets e Sets para essas variáveis. Demonstrarei alguns exemplos práticos logo mais abaixo.

Protected – Protegido pelo seu pacote

O modificador protected é menos usado, mas mesmo assim importante. Ele seria uma mistura entre o private e o public. Membros de classe protected são visíveis apenas por outros membros de classe de seu mesmo pacote ou por herança.

Exemplo Prático

Vamos demonstrar com alguns códigos práticos o uso desses modificadores de acesso e entender um pouco melhor como utilizar os métodos gets e sets.

Como exemplo utilizarei a classe Carro com alguns métodos e variáveis utilizando os modificadores de acesso citados acima. Preste atenção em qual pacote cada classe está e seus modificadores.

Pacote MeuMecanio
Classe Carro 

package MeuMecanico;

public class Carro {

	public boolean pneuEstaCheio = true;

	private int velocidade;

	protected Motor motorCarro;

	// --- Métodos ---
	public void acelerar(int forca){
		this.velocidade += forca;
	}

	public int getVelocidade(){
		return this.velocidade;
	}
}

Classe Motor

package MeuMecanico;

public class Motor {

	private int qtdValvulas;

	public int getQtdValvulas() {
		return qtdValvulas;
	}

	public void setQtdValvulas(int qtdValvulas) {
		this.qtdValvulas = qtdValvulas;
	}

}

Classe MecanicoConfianca

package MeuMecanico;

public class MecanicoConfianca {

	public void consertarCarro(Carro carro){
		// Motor Consertado
		carro.motorCarro = new Motor();
	}
}

Pacote OutroMecanico
Classe MecanicoConfianca 

package OutroMecanico;

import MeuMecanico.Carro;
import MeuMecanico.Motor;

public class MecanicoConfianca {

	public void consertarCarro(Carro carro){
		// Motor Consertado
		carro.motorCarro = new Motor();
	}
}

Explicação

Supondo que você tem um carro e ele está quebrado. Mas é claro que você não deixa seu carro na mão de qualquer mecânico. Logo o único MecanicoConfianca que pode mexer no motor do seu carro está no mesmo pacote que sua classe Carro. (protected)

A outra classe MecanicoConfianca que está em outro pacote não tem acesso a variável Motor do seu carro, mesmo essa classe ter sido instanciada como public (vide imagem acima).

Vamos comentar um pouco sobre a linha: public boolean pneuEstaCheio = true;

Coloquei essa variável para uma simples demonstração do public. Qualquer Mecanico ou qualquer outra classe não importando seu pacote pode alterar o valor da variável pneuEstaCheio, já que em teoria, qualquer pessoa poderia dizer se um pneu está cheio ou não, logo posso dar permissão public neste elemento. (public)

Outro ponto em questão é: private int velocidade;

No caso dessa variável, ninguém pode alterar o valor da velocidade a não ser o próprio carro com o método acelerar.
Ao mesmo tempo para eu saber a velocidade atual do carro só preciso chamar o método getVelocidade que me retornará a velocidade em questão. (private)

Espero que tenha ajudado!

Confuso sobre como implementar corretamente Strings no seu sistema?
Leia o tópico em que falamos sobre as Diferença entre String, StringBuilder, StringBuffer.
Veja nosso post sobre isso.
Clique Aqui