Limpeza de código morto

UCDetector

UCDetector

Trabalhar com manutenção de código não é tarefa fácil.
Depende do local que trabalha, terá tempo para executar testes e melhorar a solução que já existe.
Comecei minha vida de programador Java em 2002, quando aprendi procurando em tutoriais na internet da antiga SUN e trabalhando na área.
Desde lá, Java evolui muito como as IDEs de suporte, exemplo disso é o Eclipse, mas e o código legado? Infelizmente não, porque? Nas empresas onde trabalhei, tempo de refactoring é tempo perdido.
A vantagem de refactoring em código pode ser muito grande, mas o tempo inicial investido pode ser gigantesco. Isso requisita retestar algo que já funciona ou tudo por completo.
O ditado sempre é o mesmo: “Em time que está ganhando não se mexe.”. Será verdade? Ganhando por estar funcionando como planejado inicialmente, mas não tirando o melhor proveito da tecnologia. Evolução é melhoria em meu ponto de vista. Nessa evolução inclui, qualidade, performance, produtividade, dentre outros fatores.
Uma questão da qual eu não vejo muita discussão em refactorings, será que código não utilizado deve ser mantido? N vezes a pessoa que faz manutenção não é a mesma que criou, ou pior, a pessoa criadora daquele código já pode ter abandonado o barco. Comecei então a tirar dos projetos todo código que não é utilizado, tarefa árdua para legados.
No Eclipse achei um plugin que tem me ajudado, o UCDetector. Ele faz a limpeza de código fonte inútil. Busca referências de classe, pacote e até projeto que não possuem nenhuma associação apontando os respectivos problemas ou melhorias.
Sempre que sobra um tempo, executo o UCDector no projeto desejado e realizo a refatoração. Sei muito bem que ela vai me ajudar a não ver código perdido e todos vão ganhar para realizar leitura e manutenções nas aplicações.

Sobre o UCDetector: É um plugin do Eclipse para busca código Java morto. Por exemplo, classe públicas, métodos e propriedade que não tem referência.
Ele cria marcadores para os seguintes melhorias: Código não necessário (morto), código onde a visibilidade por ser alterada (protected, default ou private), métodos ou campos que podem ser final. São apenas sugestões. Tenha certeza das alterações que você irá realizar. As referências ainda podem ser usadas em:
Reflexões, frameworks, código de terceiros, jars, jsp, xml, e outros, alterar visibilidade por causar transtornos e não executar conforme esperado.

Link: http://www.ucdetector.org/

Espero ter ajudado,
André Rezende

Anúncios

Hibernate e Oracle

Depois de passar 1 dia investigando o problema com o hibernate, oracle no tomcat “org.hibernate.dialect.Oracle10gDialect cannot be cast to java.sql.Driver”, finalmente descobri a causa do problema.

Meu hibernate não estava definindo o dialect, somente o driver Oracle. Todos meus Junits funcionavam perfeitamente, porém quando realizada deploy, o hibernate reclamava e não carregava a entidade.

A resolução é simples, no arquivo persistence.xml deixe sempre as seguintes propriedades:

<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>

Lembrando que o persistence.xml deverá estar na pasta META-INF do seu projeto (jar ou war). Isso tudo dependerá da hierarquia de pasta de seu projeto.
Abraços,
André Rezende

Arquitetura hexagonal

Feliz 2014. Saúde, sucesso paz e muita tecnologia.
Sei que estou com o blog parado a algum tempo, mas estou voltando a ativa esse ano. Pretendo escrever sobre referências de novidades que vão agitar o mundo de 2014. Também desejo continuar escrevendo alguns artigos relatando dificuldades e como resolve-las do meu dia a dia de trabalho na TI.

Sempre fui defensor de realizar testes unitários de forma a isolar camadas, mas isso não é uma atividade fácil de ser criada pelo programador, exige um pouco de prática e gerentes de projetos costumam não adicionar em seus planejamentos/cronogramas esse tempo na implementação.
Uma nova abordagem de arquitetura vem surgindo, acredito que trazendo alguns benefícios nesse e em outros campos, a arquitetura hexagonal, através de adaptadores e portas (conceito genérico).
Aqueles que se interessarem pelo assunto, dediquem um tempo para examinar o material e refletir em algumas idéias que ela pode nos oferecer.
Segue link: http://alistair.cockburn.us/Hexagonal+architecture