Na maior parte das vezes fazer código elegante (que seja extensível, de fácil manutenção, etc) e com bom desempenho é a mesma coisa que por duas pessoas em extremos opostos de uma corda a puxarem para seu lado.
A minha filosofia em relação a este assunto é que os problemas de desempenho podem ser numa primeira fase postos um pouco de lado, a não ser que se saiba à partida que estamos a fazer um pedaço de software que necessita de ter um desempenho optimizado ao máximo. Geralmente os maiores problemas surgem quando o que está feito não é exactamente o pretendido pelo cliente, logo o melhor é ter um código que facilmente se modifique e se adapte a novas necessidades.
Logo a fórmula que uso será 80% para elegância e 20% para desempenho, isto traduzindo na prática é o mesmo que dizer que dou privilégio a um código de fácil extensibilidade e manutenção, mas quando vejo que isso me vai claramente custar no desempenho procuro uma solução alternativa/intermédia.
A minha filosofia em relação a este assunto é que os problemas de desempenho podem ser numa primeira fase postos um pouco de lado, a não ser que se saiba à partida que estamos a fazer um pedaço de software que necessita de ter um desempenho optimizado ao máximo. Geralmente os maiores problemas surgem quando o que está feito não é exactamente o pretendido pelo cliente, logo o melhor é ter um código que facilmente se modifique e se adapte a novas necessidades.
Logo a fórmula que uso será 80% para elegância e 20% para desempenho, isto traduzindo na prática é o mesmo que dizer que dou privilégio a um código de fácil extensibilidade e manutenção, mas quando vejo que isso me vai claramente custar no desempenho procuro uma solução alternativa/intermédia.
Não faria mais sentido começar por fazer o chamado código elegante e de fácil manutenção/alteração e mais para o fim do projecto começar a efectuar optimizações de desempenho?
ResponderEliminarEu não tenho ainda muita experiência e se calhar é exactamente por isso que acho importante ter um código mais elegante inicialmente.
Só há um problema com o deixar a optimização para depois: nunca é feito! :D
ResponderEliminarAs "Rules of Program Optimisation", de Michael A. Jackson, exprimem bem a minha opinião relativamente a este assunto:
ResponderEliminarRule 1: Don't do it.
Rule 2 (for experts only!): Don't do it yet
Parece que há mais gente a partilhar da minha opinião. Por acaso não sou muito de seguir regras pré definidas, mas sim adaptar-me pela experiência que possuo e é com base nessa experiência que escrevi a minha opinião.
ResponderEliminarQuanto a deixar as optimizações para o fim e nunca as fazer o que a experiência me diz é que quando as coisas "caiem" as optimizações são sempre feitas mas estamos a gastar tempo num ponto que já sabemos que é fundamental.
Agora também não acho que se deva deixar tudo para o final e esperar que a torre não se "desmorone" muito, temos de ter uma atitude minimamente preventiva (os tais 20%) em pontos que à partida é expectável que tenham problemas de desempenho.
Sabes que mais: eu também concordo contigo...
ResponderEliminarMas melhor, posso-te dizer da experiência que não houve um projecto (UM!) em que não me tenha arrependido mais tarde de não ter tido mais preocupações com o desempenho no início do projecto.
Por outro lado, pode-se sempre dizer que se o código fôr suficientemente elegante, extensível, flexível e intermutável... então não terás problemas.. essas mesmas características que tanto procuras para salvaguar a possibilidade de fazer adaptações ou mesmo mudar inteiramente de rumo ao sabor de ventos que não controlas (é esse o problema, não é?)...
...essas mesmas características (elegância, pureza e abstracção) também te permitirão derivar um projecto altamente optimizado, ou optimizável...
Não sei se me faço entender, até porque o meu discurso parece um pouco...despistado? talvez um pião de 360º
ou seja, a moral desta história é que, mesmo reconhecendo o tal erro, estou preparado para o fazer de novo, com a convicção de que sim, elegância, pureza e abstracção.
O fraco desempenho, na maior parte das vezes, é devido a um problema de (e não na) elegância :-) Muitos espremem ciclos de relógio. Eu perfiro encontrar alternativas...
ResponderEliminar