dae pessoal!
queria saber a opiniao de vcs sobre uma coisinha. Qual o tamanho de linhas recomendado para uma classe???
tipo … aqui no meu trampo eu ja achei classe com mais de 10.000 linhas de codigo!!! affffee!
eh mto foda dar manutencao num monstro destes …
eu acho q mais de 500 linhas de codigo ja eh um indicio de que alguma coisa esta errada. Ja seria melhor dividir em outras classes e tal.
Q q vcs acham???
segundo o pessoal do XP (Xtreme Programming), eles recomendam umas 20 linhas por cada método, para ficar bem claro de se entender, mais que isso, deve-se quebrar em outros métodos.
dentro de uma classe, é interessante utilizar seus métodos adequados, caso contrário, é bom separar por classes, criar heranças, interfaces, etc
Cara eu acho 2000 linhas um tanto bom.Mesmo por quê 500 linhas vc acaba logo, principalmente quando vc está fazendo um formulário, por exemplo, com muitos componentes.Por exemplo, no NetBeans, vc pode “estourar” 500 linhas de “olho fechado” , criando um formulário.Então acho 2000 linhas um tanto bom.
A Paz!!
[quote=“paulohbmetal”]Cara eu acho 2000 linhas um tanto bom.Mesmo por quê 500 linhas vc acaba logo, principalmente quando vc está fazendo um formulário, por exemplo, com muitos componentes.Por exemplo, no NetBeans, vc pode “estourar” 500 linhas de “olho fechado” , criando um formulário.Então acho 2000 linhas um tanto bom.
A Paz!![/quote]
nesse caso eu acho que deve se separar a classe de view com a classe(s) de negócios
[quote=“paulohbmetal”]Cara eu acho 2000 linhas um tanto bom.Mesmo por quê 500 linhas vc acaba logo, principalmente quando vc está fazendo um formulário, por exemplo, com muitos componentes.Por exemplo, no NetBeans, vc pode “estourar” 500 linhas de “olho fechado” , criando um formulário.Então acho 2000 linhas um tanto bom.
A Paz!![/quote]
e…hm…MVC? :roll:
Regra mais do que basica: Separacao de Responsabilidades ( ou SoC, Separation of Concerns ). Se voce tiver que realizar mais de uma acao distinta em um mesmo corpo de metodo, quebre em partes menores. O mesmo vale para classes.
Ir pelo lado de “no minimo x e no maximo y linhas” eh o mesmo que cobrar pelo sistema pela quantidade de linhas de codigo :twisted:
Rafael
Quando digo “estourar” a quantidade de linhas em um formulário, digo no view mesmo.Tudo separado, view - negócio - persistência.Pois dependendo da complexidade do view e da quantidade de componentes, ele tranquilamente “estoura” 500 linhas.
A Paz!!
[quote=“ManchesteR”][quote=“paulohbmetal”]Cara eu acho 2000 linhas um tanto bom.Mesmo por quê 500 linhas vc acaba logo, principalmente quando vc está fazendo um formulário, por exemplo, com muitos componentes.Por exemplo, no NetBeans, vc pode “estourar” 500 linhas de “olho fechado” , criando um formulário.Então acho 2000 linhas um tanto bom.
A Paz!![/quote]
nesse caso eu acho que deve se separar a classe de view com a classe(s) de negócios [/quote]
Complementando o Rafael:
Tio Page-Jones já definiu uma coisa chamada COSÃO. Isto siginifica ‘cada macaco no seu galho’.
Se você consegue ser coeso em 1000000000 linhas de código, parabéns, mas se usar corretamente este princípio dificilmente chegará a tanto.
Nos tempos da análise estruturada, tinha uma regra muito engraçada: Você ‘explode’ seus processos [divide tarefas] até que seu diagrama tenha tantas bolinhas que encha uma folha. Aí está bom.
O ponto é que isto existe desde programação/análise/projeto estruturado, vamos procurar reaproveitar o que o povo já descobriu, se não a engenharia de software não vai pra frente, minha gente
[]s
Olá
Em cada ambiente de desenvolvimento devem haver algumas regras ou convenções internas de codificação. Entre elas algumas relacionadas com tamanho de métodos e tamanho de classes. Uma sugestão poderia ser assim:[list]Métodos devem fazer uma coisa só e não devem ser maiores do que 60 linhas. Caso um método mesmo sendo especialista seja bem maior do que o limite, deve ser dividido em 2 ou mais métodos privados chamados por um método exposto ao mundo exterior. É claro que o limite de linhas deve ser fixado com bom senso, talvez 60 seja radical demais.
Classes normalmente não precisam ser subdivididas sob o ponto de vista de documentação. Quando estão grandes geralmente são demasiado complexas e os objetos representam mais de uma coisa. Refatoração nela!
Mas classes podem também ser consideradas grandes quando seus objetos ocupam muita memória. Se no sistema há tipos de objetos que não precisam de tudo da classe então parece ser um caso de subdividir a classe.[/list]Como veem, tudo é uma questão de bom senso e aproveitar a experiência da equipe ou da empresa para fazer um manualzinho de boas práticas ou de práticas comuns a todos desenvolvedores.
Isto tudo vale para sistemas novos. Os legados que funcionam bem é melhor deixa-los feios como estão.
[]s
Luca
Concordo com o Luca, aqui, mas acho que, se voce quer uma medida melhor ainda, voce pode ficar soh com “o menor possivel”. Codigo eh facil de escrever, mas caro pra manter, entao quanto menos codigo existir, mais facil manter - claro, nos limites do bom senso.
Eu acho que esse lance de tamanho de classe/método pode variar…geralmente fazer classes e métodos gigantes não é legal…o numero de 2000 linhas por classe ficou legal…acredito que seja mais ou menos isso!
Com o Java, principalmente J2EE, podemos subdividir muitas coisas…o que deixa legal as classes e métodos.
ate mais…
Cara, soh de pensar em uma classe com 2000 linhas ja me da arrepios. Se voce nao levar em conta comentarios, linhas em branco e ficar soh com o codigo, duas mil linhas eh MUITA coisa. 500 linhas jah eh muita coisa pra uma classe so, se for pensar. Deem uma olhada no codigo de alguns projetos OpenSource por ai (XStream, Prevayler e PicoContainer me vem a cabeca), e voces vao ver que uma classe ali nao passa de 500 linhas nem a pau.
Olá
Só me lembro de uma classe com este tamanho exdrúxulo. E me lembro muito bem como ela era xingada. Na verdade o cara fez um linguição cheio de Copy&paste que para ele foi até fácil de fazer. Mas quem herdou o bagulho ficou louco.
Repito, classes representam coisas. Se são muito grandes, a coisa é complexa demais e se for revista geralmente pode ser simplicada (por herança, composiçao, separação de responsabilidades, simples delete, etc.)
[]s
Luca
concordo com o CV, mas eu definiria que uma classe deve ser o mais simples possivel, mas não simples demais (algum cara famoso falou isto e não lembro quem foi)
não acho que uma medida em linhas de código seja adequada, acho que uma classe deve juntar metodos publicos que precisem estar juntos e de uma forma coesa implementar alguma função que precise de um estado predefinido.
e que ela faça isto da maneira mais simples possivel, e sempre que for adequado, delegue a implementação de uma funcionalidade alheia a sua rasão de existir para outra classe.
os metodos desta classe, devem ser cada um o menor possivel, tendo nomes que indiquem o que eles fazem.
desta maneira todo o código da classe sera simples e fácil de ler, e dificilmente ficara grande demais (quando estiver crescendo demais, normalmente estara implementando uma funcionalidade que deveria ser delegada para outra classe)
bom, acho que é mais ou menos isto
Sou da opiniao de que fixar um numero de linhas eh coisa pra redacao de vestibular. Use o bom-senso e as boas praticas, conceitos de OO, desconfiometro quando o negocio esta feio demais, etc.
Para deixar uma contribuicao: existe um plugin para Eclipse chamado PMD, que aponta possiveis problemas no codigo, como metodos e classes muito longos, estruturas muito complexas, etc. Nao sei o criterio que eh utilizado para definir se um metodo/classe eh muito longo - procurando esse dado talvez voce tenha mais informacoes a respeito sobre essa questao de limite de linhas.
BTW, o projeto eh bem abrangente e tem plugins pra diversas IDEs, Ant, etc… confra: http://pmd.sourceforge.net
Marcio Kuchma
Muito bom esse plugin. Meu codigo (e principalmente, minha maneira de codificar) melhorou um bocado depois que eu comecei a usa-lo. Sobre classes grandes, eu já vi algumas com 6000, 8000 linhas de codigo. Acabei perguntando se o cara realmente queria que eu desse manutenção ao invés de refazer. Isso porque não havia uma grama de OO na maioria do sistema.
Dia desses um colega meu falou de uma classe com 1.5mb. Sério, pode haver uma tonelada de documentação, mas, 1.5mb?! 1.5mb?! Acho que todos os conceitos de engenharia de software foram pelo ralo.
valeuz…
Com comentários e tudo, 2000 linhas!
ate mais…
[quote=“jack_-_ganzha”]
Dia desses um colega meu falou de uma classe com 1.5mb. Sério, pode haver uma tonelada de documentação, mas, 1.5mb?! 1.5mb?! Acho que todos os conceitos de engenharia de software foram pelo ralo.
valeuz…[/quote]
ateh onde eu sei uma classe (compilada) soh pode ter ateh 64k
Paulo, eu tambem já ouvi alguem falar sobre o limite de tamanho de uma classe Java. Então, para tirar a prova, lá fui eu aplicar um pouco de copy paste para escrever um monstrinho de 7000 linhas, .java com 295kb e .class com, veja só, 83kb.
Talvez nas primeiras jvm’s houvesse restrição quanto ao tamanho de uma classe compilada, mas na versão que estou usando (1.4.2), se houver, é maior do que 64kb.
valeuz…
Existem restrições quanto ao tamanho dos métodos (distancia máxima para um jump), mas não no tamanho do arquivo .class.
Eu tenho umas 2-3 classes no atual projeto que estou desenvolvendo que passam de 500 linhas e com método de mais de 20-40 linhas. Todo vez quando passo por elas me da 1 enorme vontade de refatorá-las em blocos menores mais faceis de cuidar, mas como não me sofra o tempo para isso, fico só da coceira
A alguns meses me passaram a tarefa de dar manutenção em 2 relatorios que foram escritos usando uma classes só 4000 e 5000 linhas tinham eles. Eu só não chorei ou pedi as contas pq acabei não precisando olhar para aqueles pedaços de lixo tóxico.