Skip to content

Instantly share code, notes, and snippets.

View marciojrtorres's full-sized avatar
🟢
All systems operational

Marcio Torres marciojrtorres

🟢
All systems operational
View GitHub Profile
@marciojrtorres
marciojrtorres / java_logica_com_comentarios.java
Created August 6, 2013 01:18
Tornando os comentários desnecessários com refatorações
class Contabil {
// relatório de lançamentos não contabilizados
void relatorio() {
// lançamentos deste ano, desde o início do ano até a data atual
List<Lancamento> l1 = lancamentoService.lancamentos(
new Date(new Date().getYear(), 1, 1), new Date());
// lançamentos não contabilizados
@marciojrtorres
marciojrtorres / java_aceitando_nulos_como_parametro.java
Last active December 20, 2015 16:28
Aceitar nulo como parâmetro == "malz"
class ClienteDAO {
List<Cliente> busca (Double rendaMinima, Double rendaMaxima) {
if (rendaMinima != null) // inclui o mínimo na busca
else // a renda mínima é ignorada
if (rendaMaxima != null) // inclui o máximo na busca
else // a renda máxima é ignorada
// ... código necessário para fazer a busca
@marciojrtorres
marciojrtorres / java_parametros_demais.java
Last active December 20, 2015 16:28
Parâmetros demais == "malz"
class ImovelDAO {
List<Imovel> busca (Integer nroQuartos, Integer nroVagasCarro,
Double vlrMaximoCondominio, Double vlrMaximoAluguel,
Boolean comFoto, Boolean apartamento) {
// ... código necessário para fazer a busca
}
}
// uma chamada seria assim:
@marciojrtorres
marciojrtorres / java_poucos_parametros.java
Created August 6, 2013 01:08
Classe DAO e método de busca sobrecarregados
class ClienteDAO {
public List<Cliente> buscaPorNome(String nome, String sobrenome) {
// ... código necessário para buscar clientes pelo nome e sobrenome
}
// ...
class ClienteDAO {
public List<Cliente> buscaPorNome(String nome, String sobrenome) {
// ... código necessário para buscar clientes pelo nome e sobrenome
}
@marciojrtorres
marciojrtorres / java_metodos_auxiliares_responsabilidade_unica.java
Created August 6, 2013 01:06
Métodos pequenos e com responsabilidade bem definida
class PedidoService {
public Pedido fazPedido(Carrinho carrinho) {
// ... instruções iniciais
if (carrinho.getFormaPagamento() == CARTAO_CREDITO) {
checaCreditoCliente(carrinho.getCliente());
}
// ... mais instruções
}
@marciojrtorres
marciojrtorres / java_comentarios.java
Last active December 20, 2015 16:28
Comentários para tentar deixar o código mais inteligível (ou não), melhor criar métodos auxiliares
class PedidoService {
public Pedido fazPedido(Carrinho carrinho) {
// checar se o carrinho está vazio
if (carrinho.getItens().size() == 0) {
throw new IllegalArgumentException("Carrinho Vazio");
}
// checar se a forma de pagamento foi selecionada
@marciojrtorres
marciojrtorres / java_metodo_muito_longo.java
Created August 6, 2013 00:30
Um método longo demais para fazer um Pedido
class PedidoService {
public Pedido fazPedido(Carrinho carrinho) {
if (carrinho.getItens().size() == 0) {
throw new IllegalArgumentException("Carrinho Vazio");
}
if (carrinho.getFormaPagamento() == null) {
throw new IllegalArgumentException(
"Forma Pagamento não selecionada");
@marciojrtorres
marciojrtorres / java_estendendo.java
Last active December 20, 2015 16:19
Estendendo a API da linguagem com métodos utilitários
// em inglês:
class StringUtilities {
boolean isNumber(String string) {
// ...
}
}
// situação de uso em que parece parte da linguagem:
if (StringUtilities.isNumber(var)) {
// ...
@marciojrtorres
marciojrtorres / java_verbo_sujeito.java
Created August 6, 2013 00:25
Métodos são verbos
class Cavaleiro extends Personagem {
void ataca() { ... }
void anda() { ... }
// void guarda() { ... } // guarda o quê?
void guardaEspada() { ... } // melhor
@marciojrtorres
marciojrtorres / java_nomes_imperativo.java
Created August 6, 2013 00:23
Nomes no Infinitivo vs Imperativo
class Mensagem {
void envia() { ... }
}
class Documento {
void imprime() { ... }
}
// situação de uso:
Documento documento = new Documento();