Mostrando postagens com marcador ATRIBUTOS. Mostrar todas as postagens

segunda-feira, 5 de setembro de 2016

[JAVA] Convenções de nomenclatura

Fala galera que a acompanha o blog...

Nesse post vou falar um pouco sobre algumas regras e convenções adotadas quando estamos trabalhando com a linguagem de programação Java. É importante deixar claro que estas convenções não atrapalham o desempenho do seu código, ou a interpretação do seu código para o compilador. Elas estão relacionadas a legibilidade do código, facilidade de enter o código e em muitos casos podem ser utilizadas como uma documentação do projeto.


Convenções de nomenclatura


Embora esse post se torne trivial a medida que vamos programando e ganhando experiência e nos acostumando com as nomenclaturas adotadas, é muito importante que as regras e nomenclaturas sejam respeitadas, possibilitando que qualquer desenvolver, mesmo com pouco conhecimento em Java, possa facilmente identificar métodos, classes, atributos e constantes, e utilizar/refatorar seu código de forma eficiente.

Muitos compiladores, entre eles Eclipse e NetBeans, dão um grande auxilio durante o desenvolvimento do nosso projeto, nos informando sobre as convenções de nomenclatura no momento de criação de pacotes, classes, atributos...

Abaixo utilizarem bastante a expressão CamelCase, e já adiantarei a explicação:
CamelCase é uma expressão em inglês para a prática de escrever frase ou palavras compostas, onde cada palavra é iniciada com letra maiúscula e unidas sem espaços. É utilizada em várias linguagens de programação e por ser associada a tecnologia, o marketing se apropriou dessa maneira de escrever para criar produtos e serviços como: StarCraft, iPod, OpenOffice e muitos outros. O sentido do termo CamelCase se dá pelo fato de que as letras maiúsculas no inicio das palavras "saltam", como corcovas de um camelo.

Exemplos: DevIsComing, AtualizarBlog(), postNovo, isValid. 

Bom, vamos entender as convenções:

Nome de Pacotes

Pacotes devem começar com uma letra minúscula e jamais deve conter letras não ASCII (caracteres de língua de origem latina, como caracteres acentuados), de caracteres especiais (@, #, $, %, &, *, _, etc...) ou número.

Caso o nome do pacote seja composto por mais de uma palavra, todas as letras devem ser minusculas evitando o uso do CamelCase.

Pense nos pacotes como sendo realmente as pastas do seu computador que separam arquivos específicos que fazem sentido estarem dentro daquela pasta/pacote.
Para um pacote com.devic.usuario, não faria sentido nenhum ter uma classe chamando SalvaHistoricoCompra, espera-se que dentro do pacote mencionado exista classes como Login, Logout, CarregaUsuario...

Pacotes também são muito importantes quando possuímos classes de mesmo nome. Imagine que em um projeto onde você tenha uma classe chamada ConverteData que possui uma implementação, seu amigo de projeto também criou a mesma classe ConverteData, para um outro propósito e alguma biblioteca que você esteja usando em seu projeto também possua a classe ConverteData.
Essas classes nunca poderiam ser criadas em um mesmo pacote, assim como dois arquivos do mesmo tipo e extensão não podem ser criados dentro da mesma pasta. Dessa forma os pacotes facilitam a separação, sendo possível realizar a importação do pacote especifico que se deseja utilizar.

Nome de Classes


Toda classe DEVE começar com uma letra maiúscula e, de preferencia, não devem conter letras ASCII (caracteres de língua de origem latina, como caracteres acentuados), caracteres especiais (@, #, $, %, &, *, _, etc...) ou número.

Caso o nome da classe seja composto por mais de uma palavra, deve-se adotar o "padrão" CamelCase.

As classes devem ser vistas como o agrupamento de objetos com a mesma estrutura de dados, é uma abstração ou definições de coisas do mundo real.
Exemplo: Pessoa, Carro, Animal, PessoaJuridica.


Nome de atributos ou variáveis


Atributos (variáveis) podem começar com qualquer letra ou com os caracteres $ ou_, porém não devem começar com números.

Caso o nome do atributos seja composto por mais de uma palavra, deve-ser adotar o "padrão" CamelCase.

A definição e diferença entre atibuto e variavel, você pode encontrar aqui.
Exemplo: nome, endereco, isValido, orgaoTecnico.


Nome de atributos finais ou constantes


Os atributos finais (constantes) devem ser escritos em letra maiúscula;

Caso o nome do atributo final seja composto por mais de uma palavra, utilizamos o underline (_) para separar uma palavra da outra.

Exemplo: BASE_CALCULO, FIND_BY_ID.

Nesse post vimos algumas regras e convenções de nomenclatura que foram adotadas pra a linguagem java, essa convenção muda de uma linguagem para outra (mesmo que não totalmente). Se você está começando agora a programar em java, não se preocupe em decorar essas convenções, com o tempo (e em pouco tempo) você estará, de forma natural, adotando essas convenções no seu código.

É isso ai pessoal, até a próxima!

quinta-feira, 14 de julho de 2016

SyntaxHighlighter #4 - Atributos e funcionalidades

Fala galera que acompanha o blog...

Esse é o post mais bacana da série de post sobre SyntaxHighlighter, pois é agora que vamos aprender a como trabalha com o atributo class e definir diversas funcionalidades para nosso bloco de código.


SyntaxHighlighter #4 - Atributos e parâmetros


Já aprendemos como adicionar blocos de código em nossos posts, caso tenha perdido, recomendo que volte e leia os posts anteriores para o melhor uso do componente.

Para apresentarmos um bloco de código é necessário 4 passos simples:
  1. Alterar o modo de escrita de "Escrever" para "HTML";
  2. Adicionar a tag <pre> </pre&gt que são as tags que indicam para o componente que o trecho interno deve ser interpretado para a linguagem definida no atributo class;
  3. Adicionar o atributos class, indicando que o código deve ser interpretado para a linguagem informada;
  4. Adicionar o trecho de código que será apresentado;
Um exemplo simples:

<pre class="brush: java">
public class Devic {

    public static void main(String[] args) {

        System.out.println("Falaa jovensss!");
    }
}
</pre>

O resultado é esse:

public class Devic {

    public static void main(String[] args) {

        System.out.println("Falaa jovensss!");
    }
}

Dentro do atributo class eu informei que o componente deve interpretar o trecho de código como sendo linguagem java. Mas, o componente trabalha com diversas linguagens veja nesse link, as possibilidade, onde:
  • Brush name, são exemplos de uso e a formatação quando informada cada uma das linguagens;
  • Brush aliases: é o nome que deverá ser adicionado dentro do atributo class para identificar a linguagem que estamos utilizando no bloco de código, no exemplo acima utilizamos "java", pois é o alias utilizado para identificar que o código é java.
  • File name: esse é o arquivo .js que deverá estar no seu código fonte. Para cada linguagem um arquivo .js deverá ser adicionado. O exemplo acima utilizando java só está funcionando, pois no código fonte do blog foi adicionado a seguinte linha de código:
    • <script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
Vamos ver agora exemplos de todas as funcionalidades que podemos utilizar dentro do atributo class.
  • auto-links: permite que você ative ou desative urls dentro do seu bloco de código, tornando-os clicáveis ou não;
  • class-name: permite adicionar uma classe personalizada (ou várias classes) para cada elemento marcador dentro do seu bloco de código;
  • collapse: permite adicionar um bloco de código "recolhido", que ao clicar exibe o seu conteúdo. Normalmente utilizado para evitar "spoiler" do código fonte; 
  • first-line: é utilizado para alterar o contador das linhas do bloco de código. Imagine um tutorial onde a classe utilizado de exemplo possui 200 linhas e no tutorial você adota postar partes do código para explicar. Se a cada bloco de código esse número iniciar em 1 pode gerar dúvida, assim a cada bloco de códigos o ideal é iniciar o número da linha com o último valor do bloco de código anterior;
  • gutter: exibe ou não os números da linha do seu bloco de códigos;
  • highlight: possibilita a marcação de uma ou mais linhas dentro do seu bloco de código, dessa forma concentra-se a atenção do leitor para os trechos marcados, sendo fácil a explicação utilizando a marcação como referência;
  • html-script: permite que você crie uma mistura de código HTML, XML e script, o que é muito comum no desenvolvimento web. Definir esse valor como true, requer que você tenha "shBrushXml.js" adicionado no seu código fonte e que o elemento "brush" dentro do atributo "class" ofereça suporte para este recurso;
  • smart-tabs: permite ajustar o tamanho da guia, quando ligado ele segue exatamente os espaços de uma palavra para outra;
  • tab-size: é parecido como o smart-tabis, no entando a quantidade de espaço é definida antes por um número inteiro de quantos serão os espaços entre uma palavra e outra;
  • toolbar: exibe ou não a barra de ferramentas;
Na página oficial do componente é possível encontrar todas essas funcionalidades e exemplos de uso.
Todos essas funcionalidades podem ser usadas em conjunto, depende da sua necessidade.

É isso pessoal, qualquer dúvida estamos a disposição.
Até a próxima!