| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 00:40:38
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Frank Teiti publicou um artigo no TheServerSide sobre "projeto pragmático", aonde ele diz que a maioria dos programadores OO estão mais preocupados em dar uma solução elegante ao problema (eu gostaria muito de acreditar nisso...) do que dar solução a problemas como requisitos não funcionais, como peformance, responsividade, independência de protocolos.
Texto completo: Pragmatic Desing
Infelizmente, tenho que discurdar da opinião dele, acho que primeiro resolve-se o problema de forma elegante e depois preocupa-se com performance. Agora, como você faz?
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 01:29:00
|
bbviana
JavaChild
![[Avatar]](/images/avatar/89c0a463cc070b6c547ce09aa59abd5f.jpg)
Membro desde: 24/07/2006 13:11:57
Mensagens: 111
Localização: São Paulo
Offline
|
Concordo com vc. Afinal, se pensassemos o contrario, Java nunca teria chegado onde chegou.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 02:36:29
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
Cara, tem verdade aí...
Conheço muita gente que trabalha com Java, 70 a 80%, e perde muito tempo especulando, querendo sempre aplicar "O Estado da Arte" e esquece fatores realmente significativos quando em Produção, forçando a barra para usar isto ou aquilo, aplicar padrões desnecessariamente etc.. O que muitas vezes aumenta a complexidade do sistema por inteiro, enquanto poderia dar uma solução simples.
Claro que deve-se pensar em uma forma elegante, mas de modo objetivo e mensurando os prazos corretamente (treinamento, implementação etc).
Fazer às cegas ou tentar ver além do horizonte é o ideal (soou tão clichê falar "nem um nem outro")
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 04:43:41
|
RafaelRio
Java Ninja
![[Avatar]](/images/avatar/e81218f96c55d1006352ed0a3b08d790.jpg)
Membro desde: 05/09/2006 06:52:42
Mensagens: 255
Localização: São Paulo
Offline
|
seufagner wrote:
Conheço muita gente que trabalha com Java, 70 a 80%, e perde muito tempo especulando, querendo sempre aplicar "O Estado da Arte" e esquece fatores realmente significativos quando em Produção, forçando a barra para usar isto ou aquilo, aplicar padrões desnecessariamente etc.. O que muitas vezes aumenta a complexidade do sistema por inteiro, enquanto poderia dar uma solução simples.
Bem, talvez eles não estejam tendo sucesso em fazer algo elegante, já que elegante é sempre simples.
|
Rafael Fiume.
Yes, Nós Temos Bananas
Sun Certified Programmer for the Java Platform, Standard Edition 6
Sun Certified Web Component Developer for the Java Platform, Enterprise Edition 5
Nullius in verba.
"A palavra de nenhum homem será a final."
Lema da Royal Society, associação de cientistas de Londres, em 1660. Entre os seus membros e presidentes esteve Isaac Newton. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 08:14:28
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Acho que o autor exagerou um pouco, de propósito, para provocar.
Eu acho que em primeiro lugar você deve, sim, fazer um design elegante. Não dá para negar a importância da refatoração ou dos patterns.
É muito mais fácil otimizar e identificar erros em um software elegante também.
Mas existe um limite. Muitas vezes não chegaremos a um design elegante até fazermos um não tão elegante assim. E muitas vezes teremos não só que refatorar o resultado, como refazer conceitos inteiros. Acho que é aí que morre o perigo. Muitos projetistas "travam" ao tentar chegar num grau de elegância que o conhecimento deles ainda não permite.
Pior ainda quando, em nome da elegância, tentam tornar o software "mais flexível" e "mais adaptável", montando um design elegantíssimo, mas ao mesmo tempo mais demorado, mais complexo e totalmente fora das necessidades do cliente. E o pior, fazem isso gastando a grana e o tempo desse próprio cliente...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 08:22:36
|
fmeyer
Moderador
Membro desde: 22/02/2005 17:26:29
Mensagens: 1583
Localização: Sao Paulo
Offline
|
Essa discussao 'e uma faca de dois gumes, muitas vezes voce precisa sacrificar sim a elegancia pra ter performance. principalmente quando voce nao ta trabalhando com java
|
Fernando Meyer http://fernandomeyer.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 08:49:52
|
Guerr@
Virtual Machine Man
![[Avatar]](/images/avatar/9fb640ea6abe0e849c8c1fd6eea97c22.jpg)
Membro desde: 03/12/2006 10:32:50
Mensagens: 521
Offline
|
Uma coisa é incontestável: em um código elegante é muito mais fácil de se otimizar a performance.
Se um código elegante atende os requisitos de performance (apesar de não ser a solução mais rápida), porque então sacrificar a elegância para ganhar um pouco de performance...
Em uma aplicação bem modelada, é muito mais fácil adicionar controles de cache, por exemplo, caso existam problemas com performance. Acho que a recomendação deve ser: crie um código flexível, pois quando ele precisar ser performático será muito mais fácil trabalhar com ele.
|
Eduardo Guerra - "É Java na ponta do dedo!"
Desenvolvedor de Frameworks - Pesquisador
Editor Chefe - Revista MundoJ
Professor - Instituto Tecnológico de Aeronáutica
Me siga no Twiter!!! http://twitter.com/emguerra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 09:01:02
|
cristianmedeiros
Smalltalk
Membro desde: 19/10/2006 17:31:10
Mensagens: 2
Offline
|
uma velha máxima que todos conhecem KISS (Keep It Simple Stupid) se conseguir resolver dessa forma, com certeza ficará elegante
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 09:13:47
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
E tem as regrinhas da otimização:
1. Não otimize até que seja estritamente necessário;
2. Nunca otimize até ter uma solução não otimizada perfeitamente compreensível;
3. Os problemas de performance estão na menor porção do seu código e nem sempre os locais em gargalo são óbvios. Use um profiler para identificar qual é essa porção e otimiza-la;
4. Após tentar otimizar um trecho, meça o ganho de performance. Se você não conseguiu ganho, desfaça as modificações.
5. Documente que o código está otimizado, senão alguém pode refatora-lo no futuro para uma versão simples e recair novamente no problema de performance. Preferencialmente, coloque os requisitos de performance daquele método no Javadoc.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 09:20:58
|
neófito
Virtual Machine Man
![[Avatar]](/images/avatar/728f206c2a01bf572b5940d7d9a8fa4c.jpg)
Membro desde: 07/10/2003 08:29:35
Mensagens: 575
Localização: São Paulo/SP
Offline
|
cristianmedeiros wrote:uma velha máxima que todos conhecem KISS (Keep It Simple Stupid) se conseguir resolver dessa forma, com certeza ficará elegante
Concordo com outras pessoas aqui que disseram que um design simples é um design elegante.
A simplicidade é um bem enorme. E "simples" não quer dizer ruim, mal feito, mas sim uma solução que vai direto ao ponto. O ponto que eu acho mais complicado é saber qual parte do sistema projetar para que fique flexível, pois muitas vezes é necessário conhecimentos de negócio para saber onde o sistema pode mudar futuramente, etc.
Patterns se aplicam onde são necessários.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 12:21:50
|
josenaldo
GUJ Master
![[Avatar]](/images/avatar/986ad3ada4d93c1c474674751f941082.png)
Membro desde: 27/11/2006 12:39:28
Mensagens: 1170
Localização: Uberlândia/MG
Offline
|
O problema é que tem desenvolvedor xiita por DP e aplica a torto e à direito, aumentando desnecessariamente a complexidade.
Estes, em busca da "elegância", acabam no sentido contrário!
Porque é tão complicado simplificar? E porque é tão simples complicar?
|
Josenaldo de Oliveira Matos Filho
UAIJUG - http://www.uaijug.com.br
http:jnaldo.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/02/2007 19:04:28
|
pcalcado
Moderador
![[Avatar]](/images/avatar/110eec23201d80e40d0c4a48954e2ff5.jpg)
Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline
|
Impressionante como o TSS perdeu qualidade após a saída do Marinescu. Este artigo é uma volta a 2002, completamente dispensável.
Enquanto isso no infoQ:
http://www.infoq.com/articles/Elssamadisy-adoption-patterns
http://www.infoq.com/minibooks/ruby
http://www.infoq.com/minibooks/grails
http://www.infoq.com/minibooks/domain-driven-design-quickly
http://www.infoq.com/minibooks/scrum-checklists
...
|
Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2007 19:49:44
|
jack_-_ganzha
JavaEvangelist
![[Avatar]](/images/avatar/847cc55b7032108eee6dd897f3bca8a5.jpg)
Membro desde: 31/03/2003 13:18:12
Mensagens: 315
Localização: Recife - Pernambuco
Offline
|
É aquela velha história: resolver, resolver de maneira elegante, resolver de maneira performatica.
valeuz...
|
Marcos Silva Pereira
http://www.javafree.org
http://marcospereira.wordpress.com |
|
|
 |
|
|