Classe java com 240Kb

28 respostas
marcelomartins

Ontem vi um arquivo .java com 240Kb. Era uma classe um milhares de linhas, muito grande mesmo, nem sei a quantidade total.

Vi no meio vários StringBuffer para montar SQL com váários + (concatenando strings) e nenhum PreparedStatement.

O que vocês acham disso?

Eu pessoalmente jamais faria isso, mas como é a Oracle pode né! :slight_smile:

28 Respostas

1112

Ah droga, você ganhou, ontem eu impressionei todo mundo quando falei de um certo CRUD. Vi o tamanho do arquivo hoje e ele tem 234 kb. :frowning:

Rafael_Nunes

Hah!Manja o nome dessa classe:

Sim, são 74 caracteres excluindo-se o .java.
A declaração da classe e mais uns 2 construtores já excedeu o tamanho…:mrgreen:

peczenyj

Pior q isso só encontrar numa tabela o campo “SENHA” e “CONFIRMACAO_SENHA” :roll:

velo

Ah, eu tenho um arquivo pra brigar contigo…

Tava com 270KB!!!

Mês passado foi feito um refactor nele (Dividiu-se em vários, Classe.java, Classe1.java, Classe2.java…) Onde um vai herdando do outro…

Hoje essa família de arquivos está com reles 305KB!!! :roll:
Qr ver que legal é quando você precisa chamar um método desse cara usando o eclipse, aperta Ctrl+Espaço e vai tomar um café!

VELO

Z

Rafael Nunes:
Hah!Manja o nome dessa classe:

Sim, são 74 caracteres excluindo-se o .java.


Melhor do que ConsultarRelInadCliSemDetalhDadosAnaltc.java, que é o estilo de nome que mais tem por aqui.

Beren

Rafael Nunes:
Hah!Manja o nome dessa classe:

Sim, são 74 caracteres excluindo-se o .java.
A declaração da classe e mais uns 2 construtores já excedeu o tamanho…:mrgreen:

Ah… nada como trabalhar com software IBM…

Isso eh normal com Classes com mais de 3.000 linhas no WSAD ou RAD…
o ClearCase nao aceita arquivos com nome tao grande quando seu diretorio de trabalho estah em “Meus Documentos” e mesmo assim, dependendo de quantas Streams e Sub-streams tu tens tu se f*de mais ainda…

peczenyj

ConsultarRelatorioInadimplenciaPorClienteSemestralDetalhamentoDadosAnalitico.java

=

ConsultarRelatorioMuitoGrande.java ? :twisted:

R

Bom,

aqui na empresa o lema é o seguinte,

nomes são compostos de 3 + 3.

mas como funciona?

Por exemplo:

CtrSim.java, é o Controle do Simples…
NotExp.java são as Notas Explicativas…

:roll:

As ‘variáveis’ começam com ‘g’ qdo são globais e com ‘l’ qdo são locais… :frowning:

Vai descobrir depois o que é cada coisa… :shock:

Vlw…

Rafael_Afonso

Olá:

Certa vez me disseram (acho que foi o CV) que a implementação da classe Matcher ou Pattern era gigantesca. Depois fui olhar o código da Sun, e de fato era enorme, cheio de classe internas privadas.

Grato,

F

rodrigow:
Bom,

aqui na empresa o lema é o seguinte,

nomes são compostos de 3 + 3.

mas como funciona?

Por exemplo:

CtrSim.java, é o Controle do Simples…
NotExp.java são as Notas Explicativas…

:roll:

As ‘variáveis’ começam com ‘g’ qdo são globais e com ‘l’ qdo são locais… :frowning:

Vai descobrir depois o que é cada coisa… :shock:

Vlw…

Nãooo…

Notação hungara ou notação estruturada (e suas variantes) nunca mais…

Coloque nomes legiveis porém não um sumario completo do que a classe, metodo, atributo é ou faz.

Usar prefixos também nunca mais… Muito menos variáveis globais…

Por que não pense em usar o javadocs e uma IDE mais recente, o Eclipse já te destaca o que é local ou atributo de uma classe. Também já chama o javadocs como um tip da classe.

Eu falo isso pq trabalhei por muitos anos com PL/SQL e depois com C++, onde notações e essas convenções são a cultura predominante.

abs.,

1112

Rafael Afonso:
Olá:

Certa vez me disseram (acho que foi o CV) que a implementação da classe Matcher ou Pattern era gigantesca. Depois fui olhar o código da Sun, e de fato era enorme, cheio de classe internas privadas.

Grato,

Só 175 KB, coisa de principiante. :wink:

Rafael_Nunes

rodrigow:
CtrSim.java, é o Controle do Simples…
NotExp.java são as Notas Explicativas…

E aí vocês rezam para a equipe nunca mudar? Ou quem vai dar manutenção que dê seus pulos?

Z

rodrigow:
CtrSim.java, é o Controle do Simples…
NotExp.java são as Notas Explicativas…

Uma notação dessa me dá medo! É muito ruim dá manutenção em sistemas assim.

Acho que essas coisas são desnecessárias com as IDEs de hoje em dia, melhor um nome de classe com 20 caracteres que deixe claro do que se trata - e com o Eclipse você não leva mais do que 5 toques no teclado para ter o nome completo -, do que um nome de 7 caracteres no qual o desenvolvedor tem que ler um manual de 10 páginas para entender a notação.

Daniel_Quirino_Olive

Haha. Loserrrr!!! No projeto em que eu participo tem algumas aberrações de 400kb :wink: E, por acaso, tem muito a ver com aquele banco de dados nojento cujo nome começa com a letra “O”.

marcelomartins

Ou talvez não tão por acaso! Estamos falando da mesma pessoa :slight_smile:

rodrigousp

Quem ainda não conheceu uma classe que excedesse a limitação do .class do java ???
Como chegar nisso ? Facil … é só fazer um jsp gigante que o servidor web vai transformá-lo num .java ainda maior!

Outra classe absurdamente absurda é o driver jdbc do progress. Eles quiseram criar uma classe Driver que implementasse jdbc (sem esse “bapo furado” de classes auxiliares, separação de funcionalidades, etc). Acho que eles tinham um arquivo que fizesse a conexão com o banco em alguma outra linguagem e “portaram” isso para java).

Agora eu não lembro qual a limitação do .class. Mas é um verdadeiro desprazer trabalhar com classes que vocë tenha que se preocupar com essa limitação.

Lich_King

rodrigousp:
Quem ainda não conheceu uma classe que excedesse a limitação do .class do java ???

qual é essa limitação?

T

Fiz um .class com 156.288 bytes. (O arquivo original tinha 523.337 bytes, mas era simplesmente uma repetição de “System.out.println(”")" ).

Compilou OK com o javac. Quando vou rodá-lo, a seguinte mensagem aparece:

(JDK 1.3, 1.4)

Exception in thread "main" java.lang.ClassFormatError: TestePrintf (Code of a method longer than 65535 bytes)

(JDK 5.0, 6.0)

Exception in thread "main" java.lang.ClassFormatError: Invalid method Code length 123121 in class file TestePrintf

Curiosamente, a JVM da Microsoft consegue rodar corretamente esse código. Não me pergunte por quê :stuck_out_tongue:

marcelomartins

Pra poder rodar os códigos da MS e da Oracle :mrgreen:

Rubem_Azenha

falando em banco de dados nojento, pq o pessoal de PL\SQL tem custume de colocar tudo em maiúsculo?

Daniel_Quirino_Olive

thingol:
Fiz um .class com 156.288 bytes. (O arquivo original tinha 523.337 bytes, mas era simplesmente uma repetição de "System.out.println("")" ).

Compilou OK com o javac. Quando vou rodá-lo, a seguinte mensagem aparece:

(JDK 1.3, 1.4)

Exception in thread "main" java.lang.ClassFormatError: TestePrintf (Code of a method longer than 65535 bytes)

(JDK 5.0, 6.0)

Exception in thread "main" java.lang.ClassFormatError: Invalid method Code length 123121 in class file TestePrintf

Curiosamente, a JVM da Microsoft consegue rodar corretamente esse código. Não me pergunte por quê :stuck_out_tongue:

Esta limitação é apenas para métodos, não? Digo, um método não pode ter mais do que 64Kbytes (JVM 1.4 <), não?

Z

Semelhante ao costume de cortar cabeça de pexei pra fritar - a minha avó cortava pq não cabia na panela, aí minha mãe também corta pq aprendeu assim (mesmo com as panelas de hoje em dia cabendo o peixe inteiro) e minhas irmãs também vão cortar a cabeça do peixe. Costume, apenas isso.

Eu trabalhei com Oracle Forms uma época, no começo eu escrevia normal, mas depois de um tempo é pego por osmose e acaba ESCREVENDO TUDO ASSIM. :smiley:

T

Semelhante ao costume de cortar cabeça de pexei pra fritar - a minha avó cortava pq não cabia na panela, aí minha mãe também corta pq aprendeu assim (mesmo com as panelas de hoje em dia cabendo o peixe inteiro) e minhas irmãs também vão cortar a cabeça do peixe. Costume, apenas isso.

Eu trabalhei com Oracle Forms uma época, no começo eu escrevia normal, mas depois de um tempo é pego por osmose e acaba ESCREVENDO TUDO ASSIM. :D

Por isso é que eu falo que Java é o Cobol dos anos 2000. Se você for ver, existem aquelas famosas “Code Conventions” da Sun para o Java que também ditam essas coisas - por exemplo, que os nomes das classes começam com maiúsculas, variáveis com minúsculas, constantes são todas em maiúsculas, e assim por diante.

Z

As convenções da Sun até que são oportunas e não prejudicam (pelo contrário) a visualização do código. Mas ESSA DO PL/SQL ninguém sabe de onde veio e é muito chata, pq simplesmente não deixa tudo em minúscula?

PL/SQL é algo muito estranho, muito, muito estranho!

Fabricio_Cozer_Marti

Rafael Nunes:
Hah!Manja o nome dessa classe:

Sim, são 74 caracteres excluindo-se o .java.
A declaração da classe e mais uns 2 construtores já excedeu o tamanho…:mrgreen:


Eu particularmente gosto de nomes de classes mais descritivos, nem que fique grande, mas essa daí realmente ‘no conditions’.

Primeiro, não vejo a necessidade desse Consultar na frente do nome, já que se trata de Relatório.

RelatorioInadimplenciaPorClienteSemestralDetalhamentoDadosAnalitico

Depois, se a classes estiver no pacote relatorios, que é ao meu ver o normal, não teria também necessidade de ter Relatorio na frente

InadimplenciaPorClienteSemestralDetalhamentoDadosAnalitico

Depois o ‘Detalhamento’ no meio do nome poderia ser abreviado, sem problemas e colocado no final,

InadimplenciaPorClienteSemestralDadosAnaliticoDet

Não vejo necessidade de ter a palavra Dados também, afinal qual sistema comercial que vc não trabalhe com ‘dados’ ? Ainda mais em relatorios,

InadimplenciaPorClienteSemestralAnaliticoDet

Está um tamanho razoável, mas ainda pode ser refinado.

Fabricio_Cozer_Marti

http://www.jcp.org/en/jsr/detail?id=202
This JSR will make incremental updates to the JavaTM class file format. This will principally consist of increasing certain class file size limits and adding support for split verification.

Grinvon

Hehehe esse Oracle.

Tou usando Batch nele, e putz, como as coisas mudam, tem horas que nos deixa loucos.

TheMask

É, verdade. Dá pra melhorar sim. Se é Analítico é detalhado, senão seria sintético.

InadimplenciaPorClienteSemestralAnalitico

Mas que tal?

Relatorio171Cada2VezesNoAnoTimTimPorTimTim :twisted:

Criado 12 de abril de 2006
Ultima resposta 14 de abr. de 2006
Respostas 28
Participantes 18