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.
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!
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.
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-R – Rename – 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!
Conhece o Hudson?
Conhece o Hudson? Aquele que… faz Continuous Integration.
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.
Hello world!
Olá a todos! (alguém aí?
)
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!
