Dica de Programação 4 - StringBuilder

Dica de Programação #4 – StringBuilder

Você já precisou ler um arquivo muito grande do disco, processar linha a linha para só então guardar as linhas válidas e? Estou falando de um código como este:

File bigFile = new File("big-file.txt");
Scanner scanner = new Scanner(new FileReader(bigFile))
 .useDelimiter("\\n");

String validas = "";
while (scanner.hasNext()) {
    String linha = scanner.next();
    if (linha.contains("ok")) {
        validas += linha;
    }
}

// faz algo com as linhas validas

O código é bem simples e parece inofensivo. Mas e se eu te falar que você pode ter problemas de performance exatamente na linha que faz a concatenação de strings?

Este é o típico caso que devemos evitar a concatenação de strings com o operador + (mais) e favorer o uso da API StringBuilder do Java.  Com StringBuilder ajudamos a JVM e resolvemos o gargalo de desempenho num código tão simples quanto aquele.

Quer saber mais sobre o uso da StringBuilder? Assista nosso novo vídeo com a 4a dica de programação:

[Vídeo] Dica de Programação #4: StringBuilder

Como os demais vídeos que publicamos, este também é curtinho e tem uma dica que vai fazer você repensar antes de sair concatenando grandes strings no seu código.

E não esqueça: compartilha o vídeo com aquele seu amigo que acha que concatenar strings é inofensivo para aplicação.

 

dicas-de-programacao-2-numeros-magicos-triadworks

Dica de Programação #2 – Números Mágicos

Você já escreveu um número no seu código e depois esqueceu do que ele se tratava? Estou falando de um código nesse estilo:

public double aplicaTaxa(double valor) {
 return valor * 0.87;
}

De onde veio o número 0.87? Qual seu significado? Xiii…

Estes números soltos sem uma semântica explicita tem um nome bem especial: NÚMEROS MÁGICOS. Ter estes números no seu código abre portas para bugs e problemas mais sérios na aplicação!

Mas tem como resolver…

Dúvida? Assista o vídeo da nossa 2a Dica de Programação e aprenda como ELIMINAR números mágicos do seu código:

Dica de Programação #2 – Números Mágicos

dicas-de-programacao-2-numeros-magicos-triadworks

O vídeo é curtinho (tem 3min) mas essa dica vai mudar a forma como você escreve números no seu código!

Aproveita e compartilha o vídeo com aquele seu amigo que TEIMA em escrever números mágicos no código.

Nunca mais repita “na minha máquina funciona”. TDD, Testes e Build Automatizado

Eu não sei você, mas eu repeti inúmeras vezes a frase “na minha máquina funciona” no inicio da minha carreira como desenvolvedor…

Mas quem nunca, né? rs

Desenvolver software não é uma tarefa simples, lidamos com pressão, cobranças e prazos apertados a todo instante, seja do gerente, cliente ou equipe. Você me entende! E ainda temos que garantir que aquele IFzinho que colocamos na última correção de bug funcione:

public void sacar(Conta conta, double valor) {
    if (!conta.temSaldoPara(valor)) { // esqueci dessa regra :-X
        throw new SaldoInsuficienteException();
    }
    // restante do codigo: efetua o saque
}

Mas como garantir essa nova lógica de negócio? Temos que testar! Mas como? Talvez você faça assim:

  1. alterando o saldo no banco;
  2. levantando o Tomcat;
  3. abrindo o Chrome;
  4. fazendo login na aplicação;
  5. preenchendo e submetendo formulários;
  6. verificando se houve o erro na tela;

Tudo isso é enfadonho e pior, é TESTE MANUAL. Um hora você vai esquecer ou errar algum passo e aí já viu né…

Fazer testes manuais NÃO É SUSTENTÁVEL: é CARO e LENTO. Nem todas as empresas podem arcar com isso. Por isso é recomendado escrever TESTES AUTOMATIZADOS. Por exemplo, com Java teríamos algo como:

@Test(expected=SaldoInsuficienteException.class)
public void deveNaoPermitirSacarQuandoEstiverNaLiseira() {

    Conta conta = new Conta("Rafael", 24.99); // titular e saldo atual
    double valorASacar = 90.0; // pra curtir uma Orbita na quinta <3

    CaixaEletronico caixa = new CaixaEletronico();
    caixa.sacar(conta, valorASacar); 
}

Com esse simples teste de unidade garantimos que se não houver saldo na conta a exceção SaldoInsuficienteException é lançada. Se nossa lógica mudar futuramente e esse teste quebrar saberemos que alguém fez caca no código! GENIAL, não?!

A verdade é que TODO desenvolvedor DEVERIA escrever testes. Ele deve garantir minimamente a qualidade do código que ele escreve. Concorda comigo?

Para entender do que estou falando, recomendo a leitura desse novo post no blog. Nele discutimos várias práticas para garantir a qualidade do seu código:

>> Na minha máquina funciona, e na sua? Testes, TDD e build automatizado

O que discuto no post é somente a pontinha do iceberg do que estamos preparando para nosso novo curso de testes com Java. Testes, TDD e práticas de refatoração é obrigatório para qualquer profissional que busca qualidade no software que entrega!

E aí, o que achou do post? Deixa teu comentário lá! Eu leio e respondo todos os comentários!