sábado, dezembro 29, 2007

Algoritmos difíceis, adoro eles

Adoro programar. Não sei se já disse isso, então, estou dizendo agora. Mas nada de telas de cadastro e coisas do gênero - isso eu deixo para o Merlin. Pois bem, acontece que em certos momentos, esses tal de algoritmos, nos deixam de cabelo em pé.

Fazia tempo que não acontecia. Um marasmo danado, desenvolvendo coisas - quase - toscas. Mas enfim, a calmaria passou e uma coisa bem cabeluda me atasanou (minha mãe usa essa palavras às vezes, não sei se o Aurélio a define) durante uma tarde inteira.

Ela fora quase tão medonha quanto o algoritmo essencial de layout feito no Merlin, lá nos idos de Setembro do ano passado. Pois bem, estou falando de um mapa de cache hierárquico de três níveis.

Sim, programando o Magoo, precisei de uma estrutura dessas, e com objetos tipados para facilitar a vida do desenvolvedor final (e nem vão me pagar uma bira por isso).

A idéia básica da coisa é um método putAndReturn(), que a gente passa uma String com o nome de um sistema da federação (podendo usar a sintaxe CamelCase ou a notação baseada em ponto); o formulário desejado (como um JFrame ou um JDialog - no caso do Swing) e o componente de tela (como um JTextBox, JComboBox, etc.) para o sistema adicionar esse controle dentro da estrutura de mapas. Como retorno, se tem um número inteiro longo que é a sequência do controle, baseada em seu tipo e dependente do sistema, do formulário e o tipo do controle :)

A coisa complica um pouco, porque, caso os mapas estiverem vazios (e estarão nas primeiras chamadas), a estrutura deve se auto-inicializar.

Pra não enrolar mais, vai o screenshot do algoritmo. Foram 4:33h de programação para essas míseras 23 linhas de código. Em outras palavras, quase 12 minutos por linha! Ninguém merece.


Bom, pra finalizar, a graça na coisa: tudo isso depois vira software livre :)

0 comentários: