| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 15:06:35
|
gqferreira
Virtual Machine Man
![[Avatar]](/images/avatar/bcb344196d20becbb66f098d91f83abb.png)
Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline
|
Olá pessoal!
Vocês acham normal uma classe conter +/- 1000 (mil) linhas?
Estou fazendo um programa e a classe da interface principal do programa tem 1048, não faz sentido dividir, já que essa classe realiza uma só coisa: Uma tela!
Apesar de ter todo esse tamanho, ela é extremamente organizada!
Vocês acham isso um serviço de porco?
Gustavo
Valeu gente!
|
"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw
Gustavo Quirino Ferreira |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 15:10:11
|
jingle
Virtual Machine Man
Membro desde: 04/10/2006 20:40:08
Mensagens: 642
Localização: Canoas/RS
Offline
|
Bom se eu tivesse desenvolvendo algo desde inicio, não acharia normal, tentaria ver uma forma de subdividir a classe (a menos que seja algo muuuuuuuuuito complexo).
Mas aqui na empresa onde trabalho isso é mais do que normal. =/
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 15:10:16
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Se for uma tela, eu só questionaria se não é o caso de separar a parte visual (que realmente é muito verbosa!) da parte de tratamento de eventos (que deve ficar em um lugar separado, talvez).
O único problema é se a classe, compilada, ultrapassar 64 KB; aí você vai ter um problema grave.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 15:25:21
|
gqferreira
Virtual Machine Man
![[Avatar]](/images/avatar/bcb344196d20becbb66f098d91f83abb.png)
Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline
|
É meio difíciul subdividi-la, ela é puro swing, tenho uma classe chamada métodos para não ter nada de métodos nessa 'BIG' classe. Nem os eventos dos componentes não estão nela.
Compilada ela gera 25 class, somando-se os tamanhos dá 58 kb.
Então?!
|
"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw
Gustavo Quirino Ferreira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 15:29:10
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Acho que não tem problema algum. Eu disse que o tal problema dos 64 KB ocorre se todo o código ficar em uma única classe - e acredite, isso ocorre muito quando da compilação de páginas JSP. O Jasper, o compilador que existe no Tomcat (e em outros web containers) que converte JSP para Java, acaba gerando classes bastante grandes, que acabam estourando os 64 KB - note que esse valor soma o código propriamente dito, e os dados (literais strings).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 15:32:35
|
javamaniaco
Java Ninja
Membro desde: 04/04/2007 19:21:36
Mensagens: 268
Offline
|
thingol wrote:Acho que não tem problema algum. Eu disse que o tal problema dos 64 KB ocorre se todo o código ficar em uma única classe - e acredite, isso ocorre muito quando da compilação de páginas JSP. O Jasper, o compilador que existe no Tomcat (e em outros web containers) que converte JSP para Java, acaba gerando classes bastante grandes, que acabam estourando os 64 KB - note que esse valor soma o código propriamente dito, e os dados (literais strings).
Thingol, mas que problema que isso dá que nunca ouvi falar?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 15:36:36
|
gqferreira
Virtual Machine Man
![[Avatar]](/images/avatar/bcb344196d20becbb66f098d91f83abb.png)
Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline
|
Boa observação do nosso amigo acima, não sabia que dava problemas em se ter uma classe com mais de 64 kb.
Vou presisar tomar mais cuidado!
|
"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw
Gustavo Quirino Ferreira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 15:43:15
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline
|
cara essa tela de ter bastante coisa, e geralmente essa quantidade de coisas acontece em função de abas. Enfim, se for o caso você poderia tirar a lógica de negócio da parte de apresentação (código da tela), pesquise sobre MVC.
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 16:10:01
|
gqferreira
Virtual Machine Man
![[Avatar]](/images/avatar/bcb344196d20becbb66f098d91f83abb.png)
Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline
|
O responsável pelo tamanho é uma Barra de Menus, ela tem imagens, atalhos de teclado, os 'negócinhos' do ALT+letra, divisores ...
Tem 7 painéis, todos os painéis e componentes são realinhados e alterado os tamanhos a medida que se altera o tamanho do frame.
Alem de duas tabela bastante complexas.
A barra de menus corresponde a metade da classe.
This message was edited 1 time. Last update was at 08/01/2009 16:11:07
|
"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw
Gustavo Quirino Ferreira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/01/2009 20:08:27
|
bobmoe
GUJ Ranger
![[Avatar]](/images/avatar/9cc25407f209e031babdac7d3c520ccb.jpg)
Membro desde: 11/07/2006 20:45:48
Mensagens: 806
Localização: Sampa
Offline
|
gqferreira wrote: A barra de menus corresponde a metade da classe.
Então está fácil! Transforme esse menu num componente gráfico, ou seja, faça uma classe separada que represente esse menu (que pelo jeito pode ser reutilizado em outras telas).
This message was edited 1 time. Last update was at 08/01/2009 20:08:56
|
BOB - Roberto Nogueira - bobmoe.blogspot.com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2009 08:03:28
|
fantomas
GUJ Master
![[Avatar]](/images/avatar/a2bf57c3aee957f2aaf75aa84717b3be.jpg)
Membro desde: 24/04/2008 16:10:55
Mensagens: 1531
Localização: Terra (maior parte do tempo)
Offline
|
bobmoe wrote:Então está fácil! Transforme esse menu num componente gráfico, ou seja, faça uma classe separada que represente esse menu (que pelo jeito pode ser reutilizado em outras telas).
Sou partidario desta idéia também, inclusive os paineis e a(s) tabela(s) que foram mencionados poderiam passar por estes ajustes.
Como telas complexas geralmente estão associadas a muitos eventos (alta e baixa complexidade) eles também teriam que receber o impacto desta mudança.
A ideia geral seria a seguinte: Esta tela (classe) complexa se transformaria em uma classe que iria agregar as outras partes visuais das outras estruturas; cada componente agregado deveria seguir a idéia do padrão MVC. Exemplificando: O menu deveria ter classes que descrevessem objetos para seu MVC, as tabelas também e assim por diante. Lembrando que, é sempre bom utilizar o bom censo; muitas vezes a gente na ansia de "organizar" as coisas e acaba complicando tudo gerando classes desnecessárias, ainda mais se tratando do SWING.
Em sistemas desenvolvidos com a api swing o pattern MVC deve (na minha opinião) ser uma abstração bem simplificada, pois as classes desta api já implementam este padrão, ou seja, cada componente foi construido baseado nesta idéia.
P.S Se vc estiver utilizando algum tipo de gerador de telas (igual ao matisse) facilmente conseguira classes que fiquem com este número de linhas.
flws
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/01/2009 21:16:20
|
gqferreira
Virtual Machine Man
![[Avatar]](/images/avatar/bcb344196d20becbb66f098d91f83abb.png)
Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline
|
É....Talvêz eu possa colocar a barra de menus em outra classe, ajudaria, porém tomaria um bom tempo. Mas vou tentar!
Sobre os geradores de tela, eu não uso nenhum, faço as telas na unha! Peguei raiva quando fui usar o netbeans pela primeira vêz, o troço gerava um código absurdo! Acho que quem é muito dependente dele deve sofrer para entender o código e também com o seu tamanho. Alé de que não é agradável à um programador usar um programa desses como suas pernas e braços, acho que deve agradar aos olhos da empresa aquele programador que é independente. Penso assim porque em Indaiatuba, minha cidade, tem uma empresa chamada Kaisen, que pelo o que li em uma revista, é a 4 melhor empresa para se trabalhar no mundo (nem a Microsoft é a primeira, fica em segundo), e alguns amigos meus entraram lá e o teste era programar o que o entrevistador pedisse mas tinha que ser no bloco de notas, no duro: BLOCO DE NOTAS! por isso prefiro não me viciar nesses programas, não sou passarinho para engolir o que os outros mastigam.
Valeu por todos os que participaram desse tópico, pois tive uma noção em relação ao tamanho das classes, meus amigos sempre me chamaram de porco por usar grandes classes, agora sei que isso é normal, mas o ideal é sempre buscar um meio de subdividi-las (ou será sub-dividi-las? Fiquei sabendo que ífen do 'sub' mudou?!).
|
"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw
Gustavo Quirino Ferreira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/01/2009 13:11:35
|
onolox
Java Ninja
Membro desde: 20/06/2005 20:10:58
Mensagens: 294
Offline
|
Não te extressa, o limite recomendado é de umas 2000 linhas.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 09:11:44
|
gqferreira
Virtual Machine Man
![[Avatar]](/images/avatar/bcb344196d20becbb66f098d91f83abb.png)
Membro desde: 29/11/2008 17:38:10
Mensagens: 572
Localização: Indaiatuba/SP
Offline
|
2000
2000 é linha pra caramba...
|
"Se eu tiver uma maçã e você também tiver uma maçã, e trocarmos de maçãs, cada um ficará com uma maçã. Se eu tiver uma ideia e você também tiver uma ideia, e trocarmos ideias, cada um ficará com duas ideias."
George Bernard Shaw
Gustavo Quirino Ferreira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/01/2009 09:29:27
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Hah, tem uma classe aqui com 8125 linhas, 325 KB. E só tende a aumentar. O .class dela tem 103 KB, nunca ouvi falar de problemas com isso.
This message was edited 2 times. Last update was at 16/01/2009 09:35:05
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
|
|