Software perfeito

Estou relendo o livro The Pragmatic Programmer, e num dos capítulos tem a seguinte frase “You Can’t Write Perfect Software” (Você não pode escrever software perfeito). Mas é lógico que a culpa vai ser das outras pessoas que não sabem usar seu programa. Estas pessoas quando chamarem seu método perfeito vão passar aquele parâmetro que somente uma anta passaria. :)

Agora dê uma olhada no Java, a classe Date, por exemplo, e veja quantas coisas foram marcadas como deprecated. Deu pra perceber que houve um certo arrependimento na forma como a classe foi escrita? É que pra trabalhar no desenvolvimento do Java, a Sun só deve contratar gente ruim. :D

A conclusão que eu chego (e quase todo mundo pelo que eu percebo) é que software perfeito não existe. Portanto, não perca tempo em escrever o software perfeito, porque 99,9999% de chance que não vai ser.

PS.: Na verdade só escrevi esse mini post porque, usando o Stumbleupon, me apareceu um site com um vídeo mostrando a evolução dos patches do jogo Starcraft e que a Blizzard deu suporte ao jogo por nada menos que 10 anos, fazendo correções e melhorias. Parabéns a Blizzard por se importar com seus clientes!

Maio 31, 2008. Tags: . filosofia. Deixe um comentário.

Grids CSS com blueprint

Eu estava precisando fazer um site com um layout de 4 colunas e como CSS não é o meu forte, saí procurando alguma solução já pronta. Acabei encontrando o blueprint e com a configuração padrão dele você consegue fazer um grid com até 24 colunas de 30 pixels e com largura total de 950 pixels.

Para fazer um grid você cria um “container” e dentro do “container” você define divs para cada coluna usando a classe “span-x” onde x vai ser o número de colunas a serem ocupadas pelo div. No meu caso eu queria 4 colunas de tamanho igual (total 24 colunas dividido por 4 partes = 6 para cada span), então fiz:

<div class="container">
        <div class="span-6">
                Coluna 1
        </div>
        <div class="span-6">
                Coluna 2
        </div>
        <div class="span-6">
                Coluna 3
        </div>
        <div class="span-6 last">
                Coluna 4
        </div>
</div>

Note também que no último div ainda temos que colocar a classe “last” para informar qual a última coluna.

Dá pra fazer mais coisas com grids, como grids aninhados (um dentro do outro) e customizar o tamanho do grid. O blueprint ainda possui mais algumas coisas como estilos para fontes e forms, mas no geral o blueprint é bem básico e enxuto.

Para maiores informações o site do blueprint é esse: http://code.google.com/p/blueprintcss/

Outra solução é usar o YUI (Yahoo! User Interface Library), mas especificamente para essa parte de layout achei que o html do YUI fica mais poluído que o blueprint. Só que o YUI tem muito mais funcionalidades, quem sabe uma hora eu faço algum post sobre ele.

Maio 25, 2008. Tags: , . css. Deixe um comentário.

Atalhos do Eclipse

Olá a todos!

Vou falar aqui sobre alguns atalhos úteis do Eclipse que é a IDE que eu uso.

ctrl-shift-t – Open Type – Atalho para abrir o código de um tipo do Java para edição. Por exemplo, em algum lugar do seu projeto tem uma classe GenericDAO. Então se você quiser abrí-la para edição, aperta crtl-shift-t, começa a escrever GenericDAO e clica nela na lista.

ctrl-shift-r – Open Resource – Serve para você abrir um arquivo qualquer. Por exemplo, você tem um arquivo header.html, aperta ctrl-shift-r, começa a escrever header.html e clica nele na lista.

ctrl-o – Com o cursor numa classe, navega dentro dela abrindo uma lista de métodos e atributos. Aperte ctrl-o e vá digitando o nome do método, por exemplo, getName. Selecione na lista que o cursor vai direto para o método getName.

alt-shift-RRename – Refatoração para mudança de nome de um atributo, método, nome, classe em que o cursor estiver em cima. Usando a refatoração, todos os lugares onde estiver sendo utilizado o alvo da mudança também serão modificados.

alt-shift-L – Extract Local variable – Refatoração que transforma a parte selecionada numa variável local. Por exemplo, você seleciona no código:

if (number >= 0) { ...

Aperta alt-shift-L, e escreve isPositiveNumber, ficando assim:

boolean isPositiveNumber = number >= 0;
if (isPositiveNumber) { ...

alt-shift-M – Extract Method – Refatoração que transforma a parte selecionada num método. Por exemplo, você seleciona no código:

if (number >= 0) { ...

Aperta alt-shift-m, e escreve isPositiveNumber. Isso irá criar um novo método ficando assim:

if (isPositiveNumber()) { ...

E mais abaixo terá o método:

private boolean isPositiveNumber() {
return number >= 0;
}

Aprender a usar bem os métodos de refatoração é muito importante, pois assim naturalmente o seu código fica mais legível, limpo e organizado (que é o objetivo de refatorações :) ).

Fico por aqui, espero que tenha ajudado!

Maio 16, 2008. Tags: , . ferramentas, java. Deixe um comentário.

Conhece o Hudson?

Conhece o Hudson? Aquele que… faz Continuous Integration. :D

Página do Hudson: https://hudson.dev.java.net/

Descobri esta ferramenta através do livro Java Power Tools – edição de 2008.

Achei fácil de usar, você configura seu projeto todo por tela (nada de xml), com uma interface bem limpa e ele é extensível com o uso de plugins. Tem vários plugins no site, para todos os gostos.

Para meu projeto com Maven e Subversion foi muito simples fazer a configuração.

Maio 14, 2008. Tags: , . ferramentas, java. Deixe um comentário.

Hello world!

Olá a todos! (alguém aí? :P )

Aqui vou escrever coisas sobre desenvolvimento de software que ocorrem no meu dia a dia. E também outras coisas que não ocorrem, mas que eu lembre.

Não sou um bom escritor, mas vou tentar na base do método KISS (Keep It Simple Stupid). :)

Sejam bem vindos!

Maio 14, 2008. Tags: . offtopic. Deixe um comentário.