29 março 2010

Depuração no Eclipse (debugger)



[ATUALIZADO com novo post] se chegou até aqui, saiba que tem um vídeo atualizado no post recente aqui.

No contexto de programação como podemos entender o que é a depuração e como fazê-la acontecer na prática? Quase sempre quando trabalho com novas turmas vejo uma grande maioria dos alunos ainda não utilizou esse precioso recurso do programador. O objetivo deste post é dar uma noção básica e mostrar como fazer na prática usando a IDE Eclipse.

O que é depuração?
"Um depurador (em inglês: debugger) é um programa de computador usado para testar outros programas e fazer sua depuração, que consiste em encontrar os defeitos do programa." [fonte Wikipédia]

Do meu ponto de vista, vejo como uma forma de rodar o programa de computador passo a passo, instrução por instrução de código afim de entender a sua sequência de execução em tempo real (run-time). Através deste procedimento o programador terá condições favoráveis para acompanhar o ciclo como um todo, podendo intervir no comportamento do fluxo padrão (mudando o valor de variáveis por exemplo), ou simplesmente, acompanhando o fluxo padrão da execução (observando a sequencia da execução linha a linha dentro do código fonte) para entender a lógica do programa.

Como fazer a depuração em Java?
Existem duas maneiras que considero mais convenientes de fazer isso em Java:
  1. Usar uma IDE: muitos procedimentos são simplificados para o desenvolvedor. As IDEs mais conhecidas para Java são Eclipse e NetBeans. Ambas são boas opções. Embora eu sugira o Eclipse por ser mais flexível e mais leve;
  2. Entender como podemos depurar e como fazer na prática: o Eclipse possui um HELP que explica os passos para poder fazer isso.
Passo a passo no Eclipse:
Antes de dizer como fazer, quero sugerir você procurar no HELP da IDE Eclipse esse procedimento. Acesse "/Help/Help Content". Procure em "Java Development User Guide", o post que se refere ao assunto: "Debugging your programs" (depurando seus programas).

Após uma leitura básica neste material do HELP, vamos perceber que para fazer a depuração precisamos fazer o seguinte:
  • Ter um código fonte dentro de um projeto Java;
  • Marcar uma linha no qual desejamos que a execução inicie a depuração (clique duplo na borda do seu editor de código fonte - junto a linha);
  • Iniciar a execução clicando em "menu Run/Debug As/Java Application";
O Eclipse possui uma perspectiva chamada DEBUG que será sugerida toda vez que uma execução em modo de depuração for invocada. Utilizar essa perspectiva facilitará a visualização da execução em tempo real.

A partir deste ponto você precisa utilizar os botões (Step Into (F5) ou Step Over(F6)), que servem, respectivamente, acessar a próxima instrução tentando entrar no bloco - precisa ter o código fonte; e acessar a próxima instrução não precisando entrar no bloco. Na prática isso permite acessar os códigos dos blocos dos métodos desejados de uma maneira conveniente. Se desejar sair ou continuar de forma normal, basta apertar os comandos (Terminate, Resume) respectivamente.









Conclusão
Por que depurar o código? Podemos acompanhar o ciclo de vida do aplicativo (do início ao fim), procurando verificar o valor de variáveis, de expressões, acessando métodos entre outras possibilidades.

Na minha opinião a principal vantagem é permitir o acompanhamento em tempo real. Já resolvi muitos bugs em menor tempo por utilizar esse recurso. Na prática, percebemos nosso erro de lógica quando podemos entender o que o computador está fazendo em determinada situação. A maioria das vezes o erro é do próprio programador que não previu determinada situação. Ao perceber isso, com ajudada da depuração, temos mais probabilidade de corrigir o bug alterando a lógica do programa.


24 março 2010

Dica Java SE: como remover espaços de um tipo String

De vez em quando eu postarei algumas dicas sobre programação em geral que considero úteis para um desenvolvedor. Vou focar em Java, mas pode-se procurar métodos similares nas outras linguagens de programação.

Uma maneira (não a única) para remover espaços em branco de uma variável de tipo String pode ser percorrida com o comando trim() e replaceAll(...).

 

/**

* Este programa visa exemplificar o uso do método da classe String chamado trim() e

* alguns cenários de uso.

*

* @author Douglas Daniel Del Frari

* @since 24/marco/2010.

*/

public class TesteTrim {

public static void main(String[] args) {

// Como remover os espacos do valor de um tipo String??

String nome = " Douglas Daniel Del Frari ";

System.out.println("nome 1: " + nome + " tamanho: "+nome.length());

// o método trim() permite remover os espacos. Obs.

// So funciona com espacos de inicio e fim do texto

String nome2 = nome.trim();

System.out.println("nome 2: "+ nome2 + " tamanho: "+nome2.length());

// Como remover qualquer espaco da string?

// pode-se usar o método replaceAll(...). Ex.

String nome3 = nome.replaceAll(" ", "");

System.out.println("nome 3: "+nome3 + " tamanho: "+nome3.length());

} // fim do método main

} // fim da classe

SAÍDA NO CONSOLE TEXTUAL:
 

nome 1: Douglas Daniel Del Frari   tamanho: 29
nome 2: Douglas Daniel Del Frari tamanho: 24
nome 3: DouglasDanielDelFrari tamanho: 21

Conclusão
Qualquer valor do tipo String possui vários métodos interessantes (consulte a API). Neste exemplo utilizamos o método trim() para remover os espaços. Entretanto, ele somente remove os espaços da posição que antecede e procede o texto inicial e final, respectivamente. Para contornar, podemos usar o método replaceAll(...), onde especificamos o que será removido e pelo que iremos replicar (removemos todos os espacos " " por "" --> caracteres sem espaço).