Classe java com 240Kb

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:

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:

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:

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

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

[quote=Rafael Nunes]Hah!Manja o nome dessa classe:

Sim, são 74 caracteres excluindo-se o .java.
[/quote]
Melhor do que ConsultarRelInadCliSemDetalhDadosAnaltc.java, que é o estilo de nome que mais tem por aqui.

[quote=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:
[/quote]

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…

ConsultarRelatorioInadimplenciaPorClienteSemestralDetalhamentoDadosAnalitico.java

=

ConsultarRelatorioMuitoGrande.java ? :twisted:

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…

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,

[quote=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…[/quote]

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.,

[quote=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, [/quote]

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

[quote=rodrigow]CtrSim.java, é o Controle do Simples…
NotExp.java são as Notas Explicativas…
[/quote]

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

[quote=rodrigow]CtrSim.java, é o Controle do Simples…
NotExp.java são as Notas Explicativas… [/quote]
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.

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”.

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

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.

[quote=rodrigousp]Quem ainda não conheceu uma classe que excedesse a limitação do .class do java ???
[/quote]

qual é essa limitação?

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:

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