Refatorações existentes no Netbeans IDE 6.X

10 09 2009

O Ide Netbeans também possui opções de Refactoring no meu Refactor, algumas das refatorações existentes são semelhantes as existentes no Eclipse e já citada anteriormente, mas podemos citar também:

Change Method Parameters – Modifica os parâmetros de um método, refletindo a mudança em todos os código que realizam chamada ao mesmo.

Move Class -  Move uma classe para outro pacote ou classe. Dessa forma, todas as referências a classe em questão são atualizadas

Convert Anonymous Class to Inner – Converte uma classe anônima a uma classe interna, especificando-se um identificador e um constructor. Todas as referências à classe anônima serão atualizadas.

Use Supertype Where Possible – Modifica todo código que referencia a classe selecionada (ou interface), referenciando o tipo de sua superclasse.

Safely Delete – Verifica se existe alguma referência a um determinado código (classe, interface, etc), caso não exista, remove o código.

Refatoracoes do Netbeans





Usando a Refatoração ExtractMethod

8 09 2009

Usando a Refatoração ExtractMethod – Codigo Original

package extractMethod.exemplo1original;

import javax.swing.JOptionPane;

/* Código Original */
public class Sorteio {
public static Object Sorteio;
private int numero;

Sorteio() {
numero = (int) (1 + (Math.random() * 10)); // sorteia numeros entre 1 e 10
}

public int getNumero() {
return this.numero;
}

public void setNumero(int n) {
numero = n;
}

public static void main(String args[]) {
Sorteio Sorteio1 = new Sorteio();
int resposta = Integer.parseInt(JOptionPane.showInputDialog(“Informe o valor entre 1 e 10″));

if (resposta == Sorteio1.getNumero()) {
JOptionPane.showMessageDialog(null, “Você acertou o primeiro sorteio”);
} else {
JOptionPane.showMessageDialog(null,
“Você errou o primeiro sorteio. \n O valor sorteado foi ” + Sorteio1.getNumero());
}

{
Sorteio Sorteio2 = new Sorteio();
int resposta2 = Integer.parseInt(JOptionPane.showInputDialog(“Informe um valor entre 1 e 10″));

if (resposta2 == Sorteio2.getNumero()) {
JOptionPane.showMessageDialog(null, “Você acertou o segundo sorteio”);
} else {

JOptionPane.showMessageDialog(null,”Você errou o segundo sorteio. \n O valor sorteado foi “    +        Sorteio2.getNumero());
}
}
{
Sorteio Sorteio3 = new Sorteio();
int resposta3 = Integer.parseInt(JOptionPane
.showInputDialog(“Informe um valor entre 1 e 10″));

if (resposta3 == Sorteio3.getNumero()) {
JOptionPane.showMessageDialog(null, “Você acertou o terceiro sorteio”);
} else {
JOptionPane.showMessageDialog(null,

“Você errou o terceiro sorteio. \n O valor sorteado foi ” + Sorteio3.getNumero());

}

System.exit(0);
}
}
}

Usando a Refatoração ExtractMethod Código Refatorado.

/* Refactoring por csvirgens */
package extractMethod.exemplo1refatorado;

public class Sorteio {
public static Object Sorteio;

private int numero;

//Construtor
Sorteio() {
numero = (int) (1 + (Math.random() * 10)); // sorteia numeros entre 1 e 10
}

// Métodos Acessores
public int getNumero() { return this.numero; }

public void setNumero(int n) { numero = n; }
}

package extractMethod.exemplo1refatorado;

import java.awt.HeadlessException;

import javax.swing.JOptionPane;

public class SorteioUtil {

/**
* Refatorcao do tipo ExtractMethod, Depois foi movido para a classe
* SorteioUtil, usando a refatoracao MoveMethod
*
* @param Sorteio1
* @param Sorteio2
* @param Sorteio3
* @throws NumberFormatException
* @throws HeadlessException
*/

public static void executarSorteios(Sorteio Sorteio1, Sorteio Sorteio2, Sorteio Sorteio3)
throws NumberFormatException, HeadlessException {
int resposta = Integer.parseInt(JOptionPane.showInputDialog(“Informe o valor entre 1 e 10″));
if (resposta == Sorteio1.getNumero()) {
JOptionPane.showMessageDialog(null, “Você acertou o primeiro sorteio”);
} else {
JOptionPane.showMessageDialog(null,
“Você errou o primeiro sorteio. \n O valor sorteado foi “+ Sorteio1.getNumero());
}
int resposta2 = Integer.parseInt(JOptionPane .showInputDialog(“Informe um valor entre 1 e 10″));
if (resposta2 == Sorteio2.getNumero()) {
JOptionPane.showMessageDialog(null, “Você acertou o segundo sorteio”);
} else {
JOptionPane .showMessageDialog(null, “Você errou o segundo sorteio. \n O valor sorteado foi “
+ Sorteio2.getNumero());
}
int resposta3 = Integer.parseInt(JOptionPane.showInputDialog(“Informe um valor entre 1 e 10″));
if (resposta3 == Sorteio3.getNumero()) {
JOptionPane.showMessageDialog(null, “Você acertou o terceiro sorteio”);
} else {
JOptionPane.showMessageDialog(null, “Você errou o terceiro sorteio. \n O valor sorteado foi “
+ Sorteio3.getNumero());
}
System.exit(0);
}
}

package extractMethod.exemplo1refatorado;

public class Main {
/**
* O método Main da Classe Sorteio foi movido para a Classe Main.java,
* usando a Refatoracao Move Method
*/

public static void main(String args[]) {
Sorteio Sorteio1 = new Sorteio();
Sorteio Sorteio2 = new Sorteio();
Sorteio Sorteio3 = new Sorteio();

// Chamando o método executarSorteio (criado com a refatoração extractMethod)

SorteioUtil.executarSorteios(Sorteio1, Sorteio2, Sorteio3);
}
}





Usando a Refatoração – Consolidate Duplicate Conditional Fragments

4 09 2009

Usa-se essa refatoração quando o mesmo fragmento de código esta em sendo repetido várias vezes em uma estrutura condicional.

A Melhor forma de otimizar isso é mover isso para a fora da estrutura condicional como fazemos no exemplo abaixo:

Exemplo 1 – Codigo Original sem Refatoração.

package consolidadeDuplicateConditionalFragmentsExemplo1;

// Refatoração Consolidade Duplicate Condiditional Fragraments exemplo1
public class Compara {
// Código Original
public static void main(String[] args) {
int a = 5;
int b = 10;
int resp;
System.out.println(“A vale: ” + a);
System.out.println(“B vale: ” + b);
/*
* Detectado que as linhas que fazem a impressão do resultado é repetida
* nos dois IF’s, os Ifs podem ser simplificados
*/

if (a > b) {
resp = a;
System.out.println(“O maior numero eh ” + resp);
} else {
resp = b;
System.out.println(“O maior numero eh ” + resp);
}
}
}// Fim do Exemplo1

Aplicando Consolidade Duplicate Conditional Fragments no exemplo1.

package consolidadeDuplicateConditionalFragmentsExemplo1;

// Refatoração Consolidade Duplicate Condiditional Fragraments exemplo1
public class ComparaComRefatoracao {
/* Aplicando ConsolidadeDuplicateConditionalFragments */
public static void main(String[] args) {
int a = 5;
int b = 10;
int resp;
// Otimização da impressão 1 print ou invés de dois
System.out.println(“A vale: ” + a + “\n” + “B vale: ” + b);
// O condicional foi simplificado
if (a > b)
resp = a;
else
resp = b;
/*
* a variável resp passou a ser chamada apenas uma vês e não em cada um
* dos condicionais
*/
System.out.println(“O maior numero eh ” + resp);
}
}

Fonte de Inspiração:
http://www.refactoring.com/catalog/index.html





Refatorações existentes no Eclipse

4 09 2009

O IDE Eclipse, atualmente tem 27 refatorações disponíveis no menu Refactor.

Dentre as refatorações mais usadas no Eclipse podemos citar:

Extract SuperClass – Esta refatoração tira proveito da herança de classes , evitanto código duplicado em várias classes que fazem coisas semelhantes.

Encapsulate Field – Essa refatoração consiste no encapsulamento de detalhes internos de um objeto gerando os métodos get e set para os atributos de uma classe, atualizando todas as referências aos atributos em códigos associados Os seus benefícios que podemos destacar são : Clareza de código, minimização dos erros, facilidade de extensão e modificação.

Pull Up e Push Down – Esses dois recursos de refatoração são úteis quando se é necessário mover membros numa hierarquia de classes.

Extract Local Variable – Usada quando expressões complexas tornam-se difíceis de ler, e estão repetidas pelo código, complicando ainda mais o entendimento do propósito de um método. Nessas situações extrair essa expressão para uma variável local pode tornar o código mais legível e simplificar a tarefa de manutenção do código.

Extract Method – Quando no código existem métodos grandes demais, estes tornam-se bastantes problemáticos, na maioria das vezes estão repletos de informações que podem serem ocultadas pela complexidade da lógica associada. O Extract Method reduz esse problema, para isso é necessário substituir métodos longos e complexos por vários métodos curtos e quando possível mais simples.

Rename – Permite renomear nomes de métodos e variáveis, ela busca todo o projeto por referências ao que foi refatorado e assim manter todo o código atualizado.

Extract Interface – Extrai uma interface baseado nos membros selecionados pelo usuário a partir de um método não público e estático selecionado em uma classe ou interface.

Change Method Signature – Muda a assinatura de um método.

Move Method – Move o Método selecionado para outra classe mantendo os membros que fazem referencia aquele método atualizado quando a destino final do mesmo.

O Eclipse também permite a criação de scritps de Refactoring.

Refatorações do Eclipse





Visual Novo

26 07 2009

Sim, mudança de visual pela terceira vez mas esta versão é definitiva.





Times Virtuais – Introdução

6 07 2009

Times Virtuais – Introdução
Times operando espalhados por todo o globo.

Equipes virtuais espalhadas ao redor do mundo já não são mais uma novidade, empresas ao redor do globo alocando mão-de-obra, contratando serviços, com o objetivo de economizar com mãos de obra ou usando uma mão de obra remota que possa suprir a necessidade de determinada área, em muitos casos em seu local de origem, há carência de recursos humanos ou tecnológicos para absorver determinada demanda.

A cada dia novas empresas passam a investir em projetos com times virtuais e vão encontrar diversos novos desafios, alguns destes já presentes nos projetos em que os times estão fisicamente juntos, mas também com riscos peculiares desse tipo de projeto.

A comunicação é um dos primeiros fatores que devem ser levados em conta, considerando que o ato de comunicar-se claramente já é algo difícil, quando optamos por adquirir recursos humanos em outros países nos deparamos com os problemas ligados ao idioma falado, a religião local, os costumes, as leis, os valores de cada localidade, a carência de profissionais bilíngües, trilingues, os custos com treinamentos diversos, há uma necessidade desenvolver de formas alternativas de promover a integração e motivação da equipe tanto em aspectos sociais quanto na co-responsabilidade pelo produto entregue, novos protocolos de comunicação entre as equipes.

Atualmente temos uma quantidade imensa de ferramentas comerciais, gratuitas e de código aberto criadas com o objetivo de tornar mais fácil o gerenciamento de projetos seja ele no desktop ou na web, vários fatores devem ser levados nas ferramentas a serem utilizadas, como compatibilidade com outras ferramentas do gênero, a legalidade do software, a extensibilidade, a sua curva de aprendizagem que pode demandar muito custo com treinamentos, deve se levar em conta a quantidade de informações sobre a ferramenta disponível em tutoriais na web, livros, dentre outras fatores mais técnicos.

Treinamentos presenciais podem proporcionar um maior rendimento dos participantes porem pode também elevar os custos do projeto, seja com a locomoção dos participantes, alocação, alimentação, etc.
Com o crescimento dos cursos à distância, muitos empresários afirmam estarem colhendo frutos e economizando com o ensino virtual, sendo assim vital para os times virtuais esse tipo de iniciativa.

Qual o papel do Gerente de Projeto?
Um Gerente de Projeto ou Vários Gestores?
Quais são os Riscos que a Gestão Virtual corre?
Qual melhor forma de Liderança?
Liderança centralizada ou liderança descentralizada?
Verificar até que ponto a tecnologia ajuda ou atrapalha?





Agora é a Hora!

6 07 2009

A partir de hoje o http://claudiosvirgens.wordpress.com é só voltado a Tecnologia da Informação e o http://mutacoesconstantes.wordpress.com se relaciona a tudo que não for TI, longa vida aos dois.





Como executar aplicativos no Crossover Office via linha de comando

27 05 2009

Simples é só seguir o exemplo abaixo.

A primeira linha executa o outlook e a segunda o word

/opt/cxoffice/bin/wine –cx-app outlook
/opt/cxoffice/bin/wine –cx-app winword

Nos exemplos acima, o Crossover Office estava instalado em /opt.





Agendando Downloads com o Wget

27 05 2009

Pessoal,

Com o comando abaixo você poderá agendar seus downloads no wget, para ver mais recursos desse comando consulte man wget

No terminal digite.

echo ‘wget http://www.sitexxx.com/texto.txt’ | at 22:00

o wget começará o download as 22 horas.





Softwares em Java que merecem a sua atenção

15 05 2009

OpenProj
Ferramenta para gerenciamento de projetos, disponível em: http://openproj.org/ 

Atunes
A Java Itunes Like Player, disponível em:  www.atunes.org

Jajuk
Uma jukebox para usuários avançados, feia porem bastante poderosa,
Disponível em: www.jajuk.info 

Squirrell SQL Tool
Por sem em java e fazer uso de conexões com drivers JDBC, o  Squirrel
pode acessar todo e qualquer banco que tiver um driver JDBC criado para ele.
Disponível em:  www.squirrel-sql.sourceforge.net