Existem n convenções de nomes. A empresa usa a que achar melhor.
Eu acho que ao invés de convenção, o autor do tópico quer saber quais são as boas práticas em Java.
Para ter noção da sua resposta amigo, acesse este blog http://fernandofranzini.wordpress.com/category/artigos/ eveja o artigo Práticas de Aplicativos Web.
O Fernando Franzani realmente dá ótimas dicas neste artigo, vale muito a pena.
Abraços!
[quote=andre_mbm]Eu acho que ao invés de convenção, o autor do tópico quer saber quais são as boas práticas em Java.
Para ter noção da sua resposta amigo, acesse este blog http://fernandofranzini.wordpress.com/category/artigos/ eveja o artigo Práticas de Aplicativos Web.
O Fernando Franzani realmente dá ótimas dicas, vale muito a pena.
Abraços![/quote]
Acho que o autor do tópico não liga pra essas respostas depois de 4 anos.
Mas conteudo interessante desse blog.
[quote=Mark_Ameba]Acho que o autor do tópico não liga pra essas respostas depois de 4 anos.
Mas conteudo interessante desse blog.[/quote]
Seria bom se ele postasse o que ele fez. :lol:
[quote=Mark_Ameba]Acho que o autor do tópico não liga pra essas respostas depois de 4 anos.
Mas conteudo interessante desse blog.[/quote]
UHUHAUHhauUHAhua
E eu quase respondi aqui…
Ia dizer pra ele estudar a fundo Collections, etc e tal.
Nota: verificar se o tópico não é um ress pré-histórico.
Trabalhei por 9 anos com sistema de tempo real, onde a performance é crítica. Aqui vão algumas dicas de performance:
-
Fuja dos mitos! Procure artigos sérios, de profissionais da área sobre performance (como os do Goetz, no caso do Java). Muitos mitos vão fazer você ter comportamento ridículo, como declarar final em tudo, usar métodos estáticos em todo lugar, ou achar muito importante usar ++i no lugar de i++ no Java.
-
Lembre-se que otimização custa caro, tanto para se desenvolver, quanto para manter o código depois. Portanto, otimize apenas quando for estritamente necessário;
-
Use um profiler para identificar onde otimizar (bons profilers são a VisualVM e o profiler do Netbeans). Geralmente os problemas de performance estão em pequenos gargalos, e são eles que devem ser otimizados.
-
Use um profiler, para saber se sua modificação realmente surtiu efeito. Se não surtiu, desfaça a modificação.
-
Quando o assunto for otimização, nunca queime uma dessas etapas:
a) Você precisa de um código eficaz: Seu código ainda não faz o que tem que fazer? Então não é hora de otimizar. Aproveite essa etapa para montar uma sólida bateria de testes unitários, se possível.
b) Torne seu código eficiente: Muito provavelmente, os primeiros problemas de performance serão erros bobos. Um algoritmo errado, uma estrutura de dados errada, uma operação feita no momento errado, etc. Simplesmente corrija esse problema e substitua algoritmos por outros melhores, sem perder flexibilidade ou legibilidade do seu código.
c) Torne seu código especializado: Ou seja, veja se não há possibilidades de otimização para seu problema em especial. Inclui: descartar processamento de dados desnecessários, fazer caching de dados comumente usados, usar algoritmos específicos para o problema. Um exemplo clássico é o algoritmo A* para processamento de mapas. Ele funciona desde que você possa estimar que direção seguir (o que não é o caso para mapas com teletransporte).
d) Torne seu código específico: Seu código agora passará a ser dependente de um determinado hardware ou SO. Inclui otimizações sinistras específicas de plataforma ou uso de hardware específico.
Note que queimar etapas é prejudicial pois quanto mais você avança, mais específico seu código se torna, mais tempo você levará para desenvolver e mais caro ele se tornará. Depois de cruzar a letra b), cuidado! Mudanças de condição no ambiente poderão afetar o seu programa.
-
Aprenda estruturas de dados, e saiba quando usa-las em cada caso.
-
Conheça bem as tecnologias que está trabalhando, e procure seguir as recomendações de quem às produz. Um exemplo disso, no Java, é usar StringBuilder no lugar de concatenação de Strings, ArrayList no lugar de Vector. No C++ é evitar o lançamento de exceptions. Leia atentamente a documentação e entenda o que está fazendo, ao invés de só copiar e colar exemplos da internet (essa dica vale não só para performance);
-
Tente procurar APIs específicas para seu problema, e avalia-las. Redesenvolver para obter mais performance entra na alternativa c), dos passos ali em cima.
É importante entender que performance é um conceito relativo. Ou seja, procure definir parâmetros reais e mensuráveis do quão rápido o código deve ser. Numa aplicação web, por exemplo, os tempos de resposta geralmente podem ser muito altos, diferentes de uma aplicação feita para uma injeção eletrônica. Entender esses parâmetros permite que você foque seu investimento em performance na medida certa.
[quote=ViniGodoy]Trabalhei por 9 anos com sistema de tempo real, onde a performance é crítica. Aqui vão algumas dicas de performance:
-
Fuja dos mitos! Procure artigos sérios, de profissionais da área sobre performance (como os do Goetz, no caso do Java). Muitos mitos vão fazer você ter comportamento ridículo, como declarar final em tudo, ou achar muito importante usar ++i no lugar de i++ no Java.
-
Lembre-se que otimização custa caro, tanto para se desenvolver, quanto para manter o código depois. Portanto, otimize apenas quando for estritamente necessário;
-
Use um profiler para identificar onde otimizar (bons profilers são a VisualVM e o profiler do Netbeans). Geralmente os problemas de performance estão em pequenos gargalos, e são eles que devem ser otimizados.
-
Use um profiler, para saber se sua modificação realmente surtiu efeito. Se não surtiu, desfaça a modificação.
-
Quando o assunto for otimização, nunca queime uma dessas etapas:
a) Você precisa de um código eficaz: Seu código ainda não faz o que tem que fazer? Então não é hora de otimizar. Aproveite essa etapa para montar uma sólida bateria de testes unitários, se possível.
b) Torne seu código eficiente: Muito provavelmente, os primeiros problemas de performance serão erros bobos. Um algoritmo errado, uma estrutura de dados errada, uma operação feita no momento errado, etc. Simplesmente corrija esse problema e substitua algoritmos por outros melhores, sem perder flexibilidade ou legibilidade do seu código.
c) Torne seu código especializado: Ou seja, veja se não há possibilidades de otimização para seu problema em especial. Inclui: descartar processamento de dados desnecessários, fazer caching de dados comumente usados, usar algoritmos específicos para o problema. Um exemplo clássico é o algoritmo A* para processamento de mapas. Ele funciona desde que você possa estimar que direção seguir (o que não é o caso para mapas com teletransporte).
d) Torne seu código específico: Seu código agora passará a ser dependente de um determinado hardware ou SO. Inclui otimizações sinistras específicas de plataforma ou uso de hardware específico.
Note que queimar etapas é prejudicial pois quanto mais você avança, mais específico seu código se torna, mais tempo você levará para desenvolver e mais caro ele se tornará. Depois de cruzar a letra b), cuidado! Mudanças de condição no ambiente poderão afetar o seu programa.
-
Aprenda estruturas de dados, e saiba quando usa-las em cada caso.
-
Conheça bem as tecnologias que está trabalhando, e procure seguir as recomendações de quem às produz. Um exemplo disso, no Java, é usar StringBuilder no lugar de concatenação de Strings, ArrayList no lugar de Vector. No C++ é evitar o lançamento de exceptions. Leia atentamente a documentação e entenda o que está fazendo, ao invés de só copiar e colar exemplos da internet (essa dica vale não só para performance);
-
Tente procurar APIs específicas para seu problema, e avalia-las. Redesenvolver para obter mais performance entra na alternativa c), dos passos ali em cima.
É importante entender que performance é um conceito relativo. Ou seja, procure definir parâmetros reais e mensuráveis do quão rápido o código deve ser. Numa aplicação web, por exemplo, os tempos de resposta geralmente podem ser muito altos, diferentes de uma aplicação feita para uma injeção eletrônica. Entender esses parâmetros permite que você foque seu investimento em performance na medida certa.
[/quote]
Cara, ótimas dicas!
Creio que fiz indicações corretas, desde que estudei a fundo estruturas de dados na graduação recomendei ( e recomendo ) a todos que estudem bastante isso também, pude notar que é essencial um bom conhecimento de ED e que poucas pessoas acabam levando a sério.
Gostei muito daquele link do Goetz, achei artigos muito interessantes. Definitivamente favoritado!
Abraços.
Além de ED, é bom estudar os algoritmos clássicos também. Eles podem salvar a pátria. Não precisa ser com o rigor de quem vai participar de uma olimpiada de matemática, basta ter um bom livro de referência à mão, ter uma noção do que existe e onde pode ser usado.
[quote=ViniGodoy]Trabalhei por 9 anos com sistema de tempo real, onde a performance é crítica. Aqui vão algumas dicas de performance:
- Fuja dos mitos! Procure artigos sérios, de profissionais da área sobre performance (como os do Goetz, no caso do Java). Muitos mitos vão fazer você ter comportamento ridículo, como declarar final em tudo, ou achar muito importante usar ++i no lugar de i++ no Java.
[/quote]
Acho que o cara que preparou a prova de Analista de TI do Banco Central efetivamente leu as mesmas coisas que você sugeriu. Veja a questão:
O gabarito é “C”.
Interessante. Qual é o link para download da prova?
[quote=ViniGodoy]Trabalhei por 9 anos com sistema de tempo real, onde a performance é crítica. Aqui vão algumas dicas de performance:
-
Fuja dos mitos! Procure artigos sérios, de profissionais da área sobre performance (como os do Goetz, no caso do Java). Muitos mitos vão fazer você ter comportamento ridículo, como declarar final em tudo, usar métodos estáticos em todo lugar, ou achar muito importante usar ++i no lugar de i++ no Java.
-
Lembre-se que otimização custa caro, tanto para se desenvolver, quanto para manter o código depois. Portanto, otimize apenas quando for estritamente necessário;
-
Use um profiler para identificar onde otimizar (bons profilers são a VisualVM e o profiler do Netbeans). Geralmente os problemas de performance estão em pequenos gargalos, e são eles que devem ser otimizados.
-
Use um profiler, para saber se sua modificação realmente surtiu efeito. Se não surtiu, desfaça a modificação.
-
Quando o assunto for otimização, nunca queime uma dessas etapas:
a) Você precisa de um código eficaz: Seu código ainda não faz o que tem que fazer? Então não é hora de otimizar. Aproveite essa etapa para montar uma sólida bateria de testes unitários, se possível.
b) Torne seu código eficiente: Muito provavelmente, os primeiros problemas de performance serão erros bobos. Um algoritmo errado, uma estrutura de dados errada, uma operação feita no momento errado, etc. Simplesmente corrija esse problema e substitua algoritmos por outros melhores, sem perder flexibilidade ou legibilidade do seu código.
c) Torne seu código especializado: Ou seja, veja se não há possibilidades de otimização para seu problema em especial. Inclui: descartar processamento de dados desnecessários, fazer caching de dados comumente usados, usar algoritmos específicos para o problema. Um exemplo clássico é o algoritmo A* para processamento de mapas. Ele funciona desde que você possa estimar que direção seguir (o que não é o caso para mapas com teletransporte).
d) Torne seu código específico: Seu código agora passará a ser dependente de um determinado hardware ou SO. Inclui otimizações sinistras específicas de plataforma ou uso de hardware específico.
Note que queimar etapas é prejudicial pois quanto mais você avança, mais específico seu código se torna, mais tempo você levará para desenvolver e mais caro ele se tornará. Depois de cruzar a letra b), cuidado! Mudanças de condição no ambiente poderão afetar o seu programa.
-
Aprenda estruturas de dados, e saiba quando usa-las em cada caso.
-
Conheça bem as tecnologias que está trabalhando, e procure seguir as recomendações de quem às produz. Um exemplo disso, no Java, é usar StringBuilder no lugar de concatenação de Strings, ArrayList no lugar de Vector. No C++ é evitar o lançamento de exceptions. Leia atentamente a documentação e entenda o que está fazendo, ao invés de só copiar e colar exemplos da internet (essa dica vale não só para performance);
-
Tente procurar APIs específicas para seu problema, e avalia-las. Redesenvolver para obter mais performance entra na alternativa c), dos passos ali em cima.
É importante entender que performance é um conceito relativo. Ou seja, procure definir parâmetros reais e mensuráveis do quão rápido o código deve ser. Numa aplicação web, por exemplo, os tempos de resposta geralmente podem ser muito altos, diferentes de uma aplicação feita para uma injeção eletrônica. Entender esses parâmetros permite que você foque seu investimento em performance na medida certa.
[/quote]
Olá Vini, tudo bem?
Cara muito boa suas dicas…
Atualmente, eu estou com uma aplicação q tbm é em tempo real, e q está com uma performace muito ruim. Nem sabia por onde começar, mas depois deste topico pelo menos tenho um roteiro a seguir…
Só queria saber(se for possivel) quais as técnologias que você usou neste projeto real time, pois, o meu projeto está usando muitos componentes na tela e o acesso ao banco é feito usando EJB(não pode ser acesso direto ao banco pela aplicação - questões de segurança da empresa)
Tem alguma dica, além das que vc passou Viny?(rsrsrs)
Abraços.
Não pense duas vezes. Comece fazendo profiling de tudo. Há profilers para todas as camadas java, e a maior parte dos bons bancos de dados tem profilers também. Use para isso o VisualVM, que já vem com o próprio JDK:
https://visualvm.dev.java.net/
Se você usa MySQL como servidor de banco (é uma opção de vários), dê uma olhada em:
Além disso, no caso de aplicações para usuários finais, tente também lidar com a performance percebida. Isso é, mostrar corretamente barras de progresso, e dar sinais de que a aplicação não travou. Um usuário leva pouco mais de 2 segundos para ficar insatisfeito com um programa que não responde, mas pode estar disposto a esperar vários minutos para um com uma barra de progresso que dá, na maior parte do tempo, estimativas precisas de tempo.