Gostei bastante Johnny! Gosto ainda mais que estejas a escrever, força aí!
Eu partilho das tuas conclusões, mas não necessariamente sobre as razões ;)
Tens de ler o 'Refactoring' do Martin Fowler (eu tenho a edição de capa dura, posso emprestar-te). Assim, de repente, e como ponta do iceberg, vou apenas dizer que refactoring implica a existência de uma bateria de testes que proteja a área a ser intervencionada como um arnês. Que blinde o esperado de modo a termos confiança nas alterações.
Quando bem feito isto elimina logo o síndrome do lençol curto…
Isto porque refactoring é muito mais abrangente do que sintaxe, por exemplo podes fazer refactor de dependências para módulos e geri-las por injeção… onde o resultado final pode até não ser mais legível, mas pode ser mais fácil de manter.
Sobre otimização… bom, é dar um pontapé na parede e chovem livros sobre isso :D
Mas o mais importante é: não importa como se vai otimizar mas sim o que se vai otimizar. Ou seja, de que adianta estares a otimizar um ciclo for em js se tens um algoritmo de complexidade cúbica?
Já tínhamos falado disto ;) ah e tal, análise de complexidade…
Ou perder tempo numa query sql sem ver o execution plan?
Isto para dizer o seguinte: tal como o refactor não faz sentido sem testes, a otimização não faz sentido sem medição. Ou seja: descobrir quais são os critical paths e onde estão a ser REALMENTE estrangulados, com dados objetivos ;)
Para depois conseguirmos medir o real melhoramento do desempenho. E não ser “ui, que parece mesmo que está muito melhor… espera… tá mais lento? Nem sei… mas brilha mais“ :D
