Aprende-se a programar bem sabendo

34 respostas
THIAGOANALISTA

Java é uma linguagem moderna, que possui grande capacidade de manutenção de código e também reais condições de portabilidade. Para isso, a Sun Microsystems, mantenedora e uma das criadoras da linguagem, estabeleceu padrões de escrita de métodos e classes, assim como existe formas corretas de escrita de identificadores em JAVA.
O cumprimento dos padrões de escrita de identificadores são analisados pelo compilador, seguindo as formas dispostas a seguir:

* Tecnicamente, os identificadores legais devem ser compostos por caracteres do padrão Unicode, números, símbolos de moedas e de conexão (como underscores).
* Os identificadores devem começar com um letra, um cifrão ou um caracter de conexão. Os identificadores não devem iniciar com números!
* Depois do primeiro caracter, os identificadores poderão conter qualquer combinação de letras ou outros tipos de símbolos aceitos pela linguagem JAVA.
* Na prática não há limite para o número de caracteres que um identificador JAVA pode conter.
* Não pode se utilizar palavras-chave JAVA como identificadores. Uma lista de palavras-chave é encontrada no link seguinte:

http://www.di.ufpe.br/~java/ComdexInternet96Java/top3/keywords.htm

* ATENÇÃO! Os identificadores em JAVA são case-sensitive.

Seguem alguns exemplos de identificadores viáveis à linguagem JAVA:
int _a;
     int $c;
     int nome_da_variavel;
OBS: as variáveis a seguir são diferentes! int VARIAVEL; int Variavel;

Outra convenção proposta na linguagem JAVA é o padrão de escrita da Sun. Estas regras foram propostas para ajudar desenvolvedores JAVA a criarem componentes da linguagem, e a leitura e futura manutenção dos códigos serem facilmente efetuadas por outros desenvolvedores.
As convenções de código da Sun, são baseadas pelas estimativas de que ao longo da vida útil de um código fonte, 20% do esforço dedicado ao projeto se dá para a criação dos códigos e 80% à manutenção deles. As formas de escrita indicadas pela Sun são dispostas a seguir:

* Classes e Interfaces: A primeira letra deve ser maiúscula e, se várias palavras forem escritas em seguida a primeira letra de cada palavra deve ser maiúcula (formato conhecido como camelCase). No caso de interfaces, o nome deve sempre referenciar uma ação (Adjetivo) englobada na interface.

- Exemplo de código de classe:
class Human (){
                                     }
- Exemplo de código de interface:
Interface Runnable{
                                     }

* Métodos e Variáveis: A primeira letra deve ser minúscula e, depois as regras camelCase devem ser utilizadas.

- Exemplo de código de método: public void getValues(){ } - Exemplo de código de Variável:
int valueOfVariable;

* Constantes: Em JAVA as constantes são criadas marcando variáveis como static e final. Elas devem ser nomeadas usando letras maiúsculas com caracteres underscore como separadores.

- Exemplo de código de Constante:
public static final int MAX_VALUE = 10;

Flávio A.Carvalho
Colunista JAVA

34 Respostas

F

Não percebi no post a citação do autor.

Quando pegar um conteúdo e publicar, cite a fonte, porque senão pode ser considerado plágio.

Abraço!

Marco A.

evertonsilvagomesjav

Dog a = new Dog(); Dog b = new Dog(); b = a;

O objeto que estava sendo referenciado por “b” esta elegivel para á coleta de lixo portanto, não vai ficar voando no heap atoa.

pmlm

O código está quase todo duplicado…

E a solução de “pesquisa” pode ser bem mais simples:

public int busca(int[] a, int nProcurado) {    
    for (int i = 0; i < a.lenght; i++){
        if (nProcurado == a[i]){
             return i;
        }
    }
    return -1;
dxos
Exemplo da Loja Virtual: qual a diferença entre os 2 codigos?? são o mesmo codigo
public String comprarProduto(String nomeProduto) {  
        Conexao c = new Conexao(); //cria uma conexão com um banco de dados   
      int estoque = c.pegarEstoque(nomeProduto); //recebe o estoque do produto  
      if (estoque > 0) 
{  
          estoque--;  

            c.atualizaEstoque(nomeProduto, estoque); //atualiza no banco                  
           return "sucesso";  
        else 
{  
           return "semEstoque";  
      }  
  }

cadê a Threads ?

Guitar_Men

Na boa tem muita coisa errada nesse pseudo tutorial. Vamos revisar ai pq quem é marinheiro de primeira viagem e ler isso ai ta ferrado.

adriano_si

pmlm:
O código está quase todo duplicado…

E a solução de “pesquisa” pode ser bem mais simples:

public int busca(int[] a, int nProcurado) { for (int i = 0; i < a.lenght; i++){ if (nProcurado == a[i]){ return i; } } return -1;

Heheheheheheheehh tbm pensei nisso na hora que vi… 8)

THIAGOANALISTA

ha ha!

nunca erraram!

Guitar_Men

Cara o seu tópico é para ajudar as pessoas não errar. Ai vc vem aqui e posta um monte de coisa errada ??

ViniGodoy

Sem falar que as collections estão seguindo a sintaxe do Java 4. Sem generics e cheias de casts. :roll:

ViniGodoy

Também não sei de onde está surgindo essa moda de programadores java usarem wrappers no lugar dos tipos primitivos.

public class Produto {  
   private int id;  
   private String descricao;  
   private double preco;  
   private long codigoBarra;  

// getters and setters ...  
}

Um wrapper poderia ser útil apenas caso você queira que um desses campos possa assumir valor nulo. Mas não parece ser o caso na classe do produto.

Se for um pouco mais chato, o preço não deveria ser double. Mas também não deveria ser Double, e sim, BigDecimal. E a razão para isso seria precisão, não nulidade.

Ataxexe

Não entendi o porquê do autor do tópico ter trocado na íntegra o conteúdo do post. Inicialmente eram dicas (falhas em sua maioria) sobre programação java. Agora ele apaga tudo e coloca um artigo sobre Collections.

Guitar_Men

Eu to ficando louco ou mudaram completamente o tópico ?

evertonsilvagomesjav

E outra a classe q ele criou implementando Comprable:

public class Produto implements Comparable {   
  
// continua o mesmo acima ...   
@Override   
public int compareTo(String value) {   
   return this.descricao.compareTo(value);   
}   
}

Quando vc implementa Comparable o argumento que vem no método é um Object e nao uma String, se vc nao usar generics na hora da implementação. Onde nesse caso como vc quer ordernar uma lista de Produtos o ideal para vc nao fazer cast pra usar compareTo, seria:

public class Produto implements Comparable<Produto> {   
  
// continua o mesmo acima ...   
@Override   
public int compareTo(Produto prod) {   
   return this.descricao.compareTo(prod.descricao);   
}   
}
nel
ViniGodoy:
Também não sei de onde está surgindo essa moda de programadores java usarem wrappers no lugar dos tipos primitivos.
public class Produto {  
   private int id;  
   private String descricao;  
   private double preco;  
   private long codigoBarra;  

// getters and setters ...  
}

Um wrapper poderia ser útil apenas caso você queira que um desses campos possa assumir valor nulo. Mas não parece ser o caso na classe do produto.

Se for um pouco mais chato, o preço não deveria ser double. Mas também não deveria ser Double, e sim, BigDecimal. E a razão para isso seria precisão, não nulidade.

Vini, sobre a questão de utilizar BigDecimal ao invés de um double ou Double para o caso de um preço de um produto, concordo plenamente.
Mas estes dias mesmo, andei lendo em outra postagem sobre Wrapper. Lá, era recomendado que se utilize, se possível, Objetos e não tipos primitos, pois os tipos primitos não estão sujeitos a Gargabe Collector (perdoe se errei o nome, enfim, ao "Coletor de Lixo" do Java) em compensação, um Objeto após estar fora de escopo, está sujeito a ser excluido da memória.

O quanto disso é verdade e/ou mentira?
Deve ser ponderado de acordo com o desenvolvimento/necessidade ou há uma regra básica a ser seguida?

Grato e abraços!

ViniGodoy

Pior que ele mudou para outro tão cheio de erros quanto…

dxos

Tah ficando louco não… inicialmente ele tinha feito um topico com erros que poderiam ser cometidos e talz… parecido com 1ª aula de programacao (apesar de ver muito codigo por ai com esses erros).
Ai agora o cara trocou tudo por um de collections assim do nada.

Não Entendi também …

THIAGOANALISTA

eu nao sei como excluir este tópico

Guitar_Men

AIUhAIUhAIuhAiuAH mundou denovo… Sério ta cômico isso aqui

dxos

kKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

Já não é mais colections q esta lá huasdhuasdhu
MUDOU TUDO DENOVU HEHEHEHEH
A cada um que acha na internet e Troca tudo denovu asyuasdhuasdhu

adriano_si

Eh um Topico Polimorfico… Viva o Polimorfismo… :twisted:

Ataxexe

Você não parece querer excluí-lo, afinal, troca o texto a todo momento.

Acho que seria melhor alguém bloquear logo esse tópico mutante.

von.juliano

Eu acho que deveriam ter mais respeito pelo rapaz, pois se ele postou tentando ajudar quem está começando, não é assim que vão o estimular a melhorar. Tudo bem que o conteúdo está com erros, mas não seria melhor simplesmente apontar o que deve melhorar, ajudando assim também o desenvolvimento dele?

Posso estar enganado, mas me parece que a cada vez que alguém cai em cima do conteúdo que ele posta, ele muda para um mais simples, talvez procurando acertar. De novo, pode conter erros, mas a intenção é boa. Muitos aqui já devem ter escrito um artigo sobre algo que não conhecia bem, apresentou e foi muito criticado, então tenham bom senso.

Guitar_Men

von.juliano:
Eu acho que deveriam ter mais respeito pelo rapaz, pois se ele postou tentando ajudar quem está começando, não é assim que vão o estimular a melhorar. Tudo bem que o conteúdo está com erros, mas não seria melhor simplesmente apontar o que deve melhorar, ajudando assim também o desenvolvimento dele?

Posso estar enganado, mas me parece que a cada vez que alguém cai em cima do conteúdo que ele posta, ele muda para um mais simples, talvez procurando acertar. De novo, pode conter erros, mas a intenção é boa. Muitos aqui já devem ter escrito um artigo sobre algo que não conhecia bem, apresentou e foi muito criticado, então tenham bom senso.


Se você puder ler os primeiros posts tentamos fazer isso. Apontando os erros, foi ai que ele começou a mudar o conteúdo. Agora mudar o tópico 3 vezes é brincadeira ja. Inclusive o que me deixou um pouco irritado foi o ironismo dele perguntando se o pessoal nunca tinha errado. Até então ninguém tinha faltado com o respeito ainda…

adriano_si

von.juliano:
Eu acho que deveriam ter mais respeito pelo rapaz, pois se ele postou tentando ajudar quem está começando, não é assim que vão o estimular a melhorar. Tudo bem que o conteúdo está com erros, mas não seria melhor simplesmente apontar o que deve melhorar, ajudando assim também o desenvolvimento dele?

Posso estar enganado, mas me parece que a cada vez que alguém cai em cima do conteúdo que ele posta, ele muda para um mais simples, talvez procurando acertar. De novo, pode conter erros, mas a intenção é boa. Muitos aqui já devem ter escrito um artigo sobre algo que não conhecia bem, apresentou e foi muito criticado, então tenham bom senso.

Yes man… Sorry me my friend… :frowning:

dxos

von.juliano:
Eu acho que deveriam ter mais respeito pelo rapaz, pois se ele postou tentando ajudar quem está começando, não é assim que vão o estimular a melhorar. Tudo bem que o conteúdo está com erros, mas não seria melhor simplesmente apontar o que deve melhorar, ajudando assim também o desenvolvimento dele?

Posso estar enganado, mas me parece que a cada vez que alguém cai em cima do conteúdo que ele posta, ele muda para um mais simples, talvez procurando acertar. De novo, pode conter erros, mas a intenção é boa. Muitos aqui já devem ter escrito um artigo sobre algo que não conhecia bem, apresentou e foi muito criticado, então tenham bom senso.

Até concordo, mas Do nada o topico passar a tratar de Collections oq num tinha nada haver com o 1º, ai do nada mudou denovu…
estavamos todos comentando para se corrigir os errosd q apareciam, até dicas de outros codigos o pessoal mandou para ajudar…

von.juliano

Guitar_Men:
Se você puder ler os primeiros posts tentamos fazer isso. Apontando os erros, foi ai que ele começou a mudar o conteúdo. Agora mudar o tópico 3 vezes é brincadeira ja. Inclusive o que me deixou um pouco irritado foi o ironismo dele perguntando se o pessoal nunca tinha errado. Até então ninguém tinha faltado com o respeito ainda…

Eu estou acompanhando o tópico desde o começo e li as outras postagens (só não lembro de ele ter dito sobre nunca terem errado, mas tudo bem), e não achei a troca do conteúdo falta de respeito, mas uma tentativa de acerto. Tudo bem que trocar tudo não é o melhor à se fazer, mas acho que a escurraçadas seguintes só estão piorando a situação!

Se você olhar outros tópicos dele, como esse aqui, verá que ele não está de brincadeira. Tudo bem que tem gente que parece que tá de sacanagem quando abre um tópico, mas não acho que seja o caso.

von.juliano

@THIAGOANALISTA

Como eu falei antes, admiro a sua iniciativa, mas você está indo no caminho errado. Quando você posta algo como se fosse um artigo, teoricamente não pode estar errado. Se a idéia é postar, e aí corrigir e enriquecer o conteúdo com a contribuição dos demais, você não deve colocar como se já estivesse pronto.

Não me entenda mal, mas me passou a impressão de que você está aprendendo e escrevendo esses artigos à partir dos seus estudos. Se for o caso, procure pedir para alguém revisar primeiro antes de colocar o artigo como “pronto”.

Flw!

ViniGodoy

nel:
Vini, sobre a questão de utilizar BigDecimal ao invés de um double ou Double para o caso de um preço de um produto, concordo plenamente.
Mas estes dias mesmo, andei lendo em outra postagem sobre Wrapper. Lá, era recomendado que se utilize, se possível, Objetos e não tipos primitos, pois os tipos primitos não estão sujeitos a Gargabe Collector (perdoe se errei o nome, enfim, ao “Coletor de Lixo” do Java) em compensação, um Objeto após estar fora de escopo, está sujeito a ser excluido da memória.

O quanto disso é verdade e/ou mentira?
Deve ser ponderado de acordo com o desenvolvimento/necessidade ou há uma regra básica a ser seguida?

Tem um fundo de verdade, mas bastante equivocado. Pelos seguintes motivos:

a) Eles ocupam a memória da referência e do tipo primitivo que está dentro do wrapper. Mesmo que não haja um tipo primitivo, a memória da referência ainda será ocupada, e ela equivale a 4 bytes, o que  é inferior a um long ou double.  está o principal equívoco da alegação, pois, mesmo valendo null, você ainda estará gastando 4 bytes;

b) Esses campos são obrigatórios. Então, fatídicamente estarão preenchidos, e ocupando os 4 bytes da referência + os bytes do tipo primitivo.

c) Eles exigem processamento extra em toda operação aritmética (unboxing);

Como eu falei, se o dado é obrigatório e não pode ficar nulo, não tem razão nenhuma para se usar um wrapper. Ele só insere uma complexidade a mais no código, sem nenhum benefício.

Guitar_Men

von.juliano:
Guitar_Men:
Se você puder ler os primeiros posts tentamos fazer isso. Apontando os erros, foi ai que ele começou a mudar o conteúdo. Agora mudar o tópico 3 vezes é brincadeira ja. Inclusive o que me deixou um pouco irritado foi o ironismo dele perguntando se o pessoal nunca tinha errado. Até então ninguém tinha faltado com o respeito ainda…

Eu estou acompanhando o tópico desde o começo e li as outras postagens (só não lembro de ele ter dito sobre nunca terem errado, mas tudo bem), e não achei a troca do conteúdo falta de respeito, mas uma tentativa de acerto. Tudo bem que trocar tudo não é o melhor à se fazer, mas acho que a escurraçadas seguintes só estão piorando a situação!

Se você olhar outros tópicos dele, como esse aqui, verá que ele não está de brincadeira. Tudo bem que tem gente que parece que tá de sacanagem quando abre um tópico, mas não acho que seja o caso.

Segue o post que eu interpretei como ironismo

THIAGOANALISTA:
ha ha!

nunca erraram!

THIAGOANALISTA

Nossa, cada um querendo ser melhor que o outro, que senso de companheirismo.
Cada tentativa um, dois ou vários erros, mas aprendemos com eles e além de tudo, isso mostra como são as pessoas realmente.

ViniGodoy

THIAGOANALISTA:
Nossa, cada um querendo ser melhor que o outro, que senso de companheirismo.
Cada tentativa um ou vários erros, mas aprendemos com eles e além de tudo mostra como são as pessoas realmente.

Thiago, não é questão de querer ser melhor que o outro, mas temos que saber também ouvir críticas. Você perdeu uma ótima oportunidade de puxar os colegas e ir corrigindo o artigo com as sugestões.

Por exemplo, por que você não vai aplicando as correções no post inicial, e perguntando se agora está ok? Você pode acabar com um ótimo tutorial de collections em mãos.

nel

Ah perfeito.

Então na realiadade se temos campos nos quais sabemos que serão preenchidos e não virão a serem nulos, podemos utilizar de tipos primitos tranquiliamente, certo?
E sobre este tópico, creio que o ideal é encerrar qualquer discussão sobre as n mudanças que o criador fez, seu conteúdo e etc, afinal de contas, não foi um conteúdo ofensivo ou algo do genêro, ele simplesmente se equivocou e quis reparar o erro rapidamente, consequentemente, errando novamente.

Creio que o ideial é trancar ou encerrar este tópico e nos preocuparmos com coisa mais importantes, certo pessoal?

Edit: concordo com o Vini. Aproveita o que os colegas falaram sobre Collections e começa a editar e montar seu tutorial sobre Collections que será muito útil. Abraços.

Obrigado por esclarecer a dúvida Vini.
Abraços a todos.

THIAGOANALISTA

Valeu Viny, obrigado pela atenção.

ViniGodoy

Isso. Na verdade, acho que o único caso que justifica ter um wrapper no lugar de um tipo primitivo é esse: suportar o valor nulo.
E claro, usar wrappers para o que eles foram criados: servir de “container” para um número quando um objeto é obrigatório, como é o caso das collections.

Criado 5 de agosto de 2010
Ultima resposta 5 de ago. de 2010
Respostas 34
Participantes 11