Não perca a elegância

Devo confessar que durante muito tempo literalmente re-inventava a roda em se tratando de ColdFusion. Como todos nós, iniciantes ou experts, fazia barbarides (acho que ainda faço algumas) com o CFML procurando atingir um objetivo muito simples. Hoje vou dar um exemplo que pode acontecer com muita gente.

Você já fez uma query simples que retornava duas variáveis tais como “campoID” e “descricao”? Obviamente que sim. E você já precisou colocar os IDs retornados (“campoID”) numa lista? Muito provavelmente também. As necessidades de se ter uma listagem dos IDs retornados pela query são inúmeras e fundamentais em algumas ocasiões. Pois eis aqui o exemplo mais estúpido de como fazer isso e logo em seguida o jeito mais correto, elegante e rápido (sua CPU agradece).

UPDATE: obrigado ao André Garcia pelo lembrete da função ValueList()!

Maneira estúpida:

lista_estupida.gif

E a mais elegante:

elegante2.gif

Ou ainda:

lista_elegante.gif

Veja este teste comparando a performance das três abordagens


3 Comments on “Não perca a elegância”

  1. André Garcia disse:

    Alex,
    eu sempre usei o ValueList(qBusca.campoID) e acho até mais simples..
    O resultado é o mesmo, não é?!
    Abraço..

  2. Alex Hubner disse:

    Bem lembrado André! Na verdade este é mais elegante ainda pois é uma função nativa do CF. Tinha me esquecido completamente… Vivendo e aprendendo! ;o)

    Em termos de performance é indiferente. Na verdade acredito que o engine do CF deva usar a mesma abordagem em ambos os casos. Ainda não vi o source em java para tirar a dúvida, mas aqui vai um pequeno teste que fiz para comparar as duas abordagens:

    http://www.alexhubner.com/value_list.cfm

    De qualquer maneira vou fazer um adendo, a abordagem usando ValueList() é melhor mesmo.

  3. As funções de lista do CF são iiiindispensáveis. 🙂