Especialização em web com interfaces ricas. Boas Práticas de Programação

Documentos relacionados
Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

Orientação a Objetos e Java

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Unidade 12: Estrutura de Repetição Simples Prof. Daniel Caetano

Especialização em web com interfaces ricas

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010

Programação: Vetores

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Linguagem C: Introdução

1ª Lista de Exercícios

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

double x; x = enigmab1(100);

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Linguagens de Programação Classificação

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

1) Operadores de auto incremento ++ e auto decremento --

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

ponteiros INF Programação I Prof. Roberto Azevedo

1 Exercícios com ponteiros

Tipos, Literais, Operadores

4 TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

16:20:29. Introdução à Informática com Software Livre

Variável Composta Homogênea Unidimensional e Multidimensional - ARRAY

Métodos Computacionais

Seqüências de Caracteres

Métodos Computacionais. Strings (Vetor de Caracteres)

Instituto Superior de Engenharia de Lisboa

Aula 12: Memória: Barramentos e Registradores

Métodos. Utilizados para dividir o programa em subprogramas

Métodos e Procedimentos. Prof. Jesus José de Oliveira Neto

Aula 08 Estruturas de Condição. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Linguagens de Programação Conceitos e Técnicas. Amarrações

Linguagem C Princípios Básicos (parte 1)

Programação de Computadores para GI

4 Variáveis. Unesp Campus de Guaratinguetá

Manual de Padrões para Desenvolvimento Java

Arrays em Java. Introdução à Programação. Bruno Cartaxo

Levantamento de Classes

Algoritmos I Aula 13 Linguagem de Programação Java

PROGRAMAÇÃO I A LINGUAGEM DE PROGRAMAÇÃO JAVA I

Representação de Dados (inteiros não negativos)

1 Exercícios com ponteiros

Linguagens de. Aula 02. Profa Cristiane Koehler

PROGRAMAS BÁSICOS EM C++ Disciplina: Introdução à Ciência da Computação Prof. Modesto Antonio Chaves Universidade estadual do Sudoeste da Bahia

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN

Conceitos de Linguagens de Programação

Introdução a Programação na Linguagem C.

Modulo 11:Endereços e ponteiros

Mini apostila de Python - Oficina de Vestibulandos. PET Computação - UFPR September 2016

Padrão de projeto de software

Aula 14: Funções Passagem de Parâmetros por Referência

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

Legibilidade do código fonte

Programação por Objectos. Java

Comando de Seleção em Java

Leitura Segura de Strings

LISTA DE EXERCÍCIOS - ro. 04

Lógica e Linguagem de Programação Convertendo um algoritmo em pseudocódigo para a linguagem C Professor: Danilo Giacobo

Como criar o seu Servidor Metatrader5 na Nuvem (cloud) da Amazon

Revisão C++ - Parte 1

Slides trabalhados durante a quinta aula

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Introdução à Linguagem C

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Aula 3. Objetivos Sequências de escapes ; Um aplicativo que adiciona inteiro; Aritmética.

Introdução à Programação C

Diagrama de Classes. Prof. Maikel Linares

Programação Básica. Estrutura de um algoritmo

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

JavaScript 2.0X X

p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco

Linguagens de Programação I

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Vetores Unimensionais

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Aula 4 Estruturas de Controle

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Introdução à Orientação a Objetos em Java

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Listas Lineares Ordenadas

Treinamento Olimpíada Brasileira de Informática

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Fundamentos da programação Parte - 1

Técnicas de Programação II

Regras de estilo para código fonte em C/C++

Uma Questão de Estilo Elementos de Estilo Java

Pág. 1 de 6

Introdução ao IDE Netbeans (Programação Java)

9 Classes Abstractas e Interfaces

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

No Excel podemos definir um nome para um intervalo de células, ou simplesmente para uma célula a fim de facilitar trabalhos que possam envolvê-las.

Aula 15 Variáveis Indexadas (vetores)

Entendendo e usando permissões no Linux. Orientador de Curso: Rodrigo Caetano Filgueira

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Transcrição:

Especialização em web com interfaces ricas Boas Práticas de Programação Prof. Fabrízzio Alphonsus A. M. N. Soares fabrizzio@inf.ufg.br professor.fabrizzio@gmail.com Instituto de Informática Universidade Federal de Goiás Aula 13 1 de junho de 2012 Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 1/25

Nomes Significativos Nomes Significativos Há nomes por todos os lados em um software. Nomeamos diversos elementos, tais como: Variáveis Funções Parâmetros Classes Pacotes Além disso, nomeamos arquivos: Jar War Ear Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 2/25

Autodocumentação Autodocumentação O nome de uma variável, função ou classe deve responder a todas as grandes questões. Se o nome de uma variável exige um comentário, então ele não releva seu propósito. A variável d além de não revelar tempo, muito menos revela que este tempo é em dias. 1 int d; // tempo decorrido em dias Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 3/25

Use nomes que revelem seu propósito Use nomes que revelem seu propósito Devemos escolher nomes que revelam a mensuração e a unidade usada. Isso pode facilitar bastante o entendimento e alteração do código. 1 int tempodecorridoemdias; 2 int diasdesdeacriacao; 3 int diasdesdeamodificacao; 4 int idadedoarquivoemdias; Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 4/25

Use nomes que revelam seu propósito 1 public List<int[]> peguetodos() { 2 List<int[]> lista1 = new ArrayList<int[]>(); 3 for (int[] x: alista) 4 if (x[0] == 4) 5 lista1.add(x); 6 7 return lista1; 8 } Listagem 1: Qual é o propósito desse código? Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 5/25

Use nomes que revelam seu propósito Por que é difícil dizer o que o código faz? Algumas questões: Que tipos de coisas estão em alista? Qual a importância de um item na posição zero em alista? Qual a importância do valor 4? Como eu usaria a lista retornada? Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 6/25

Use nomes que revelam seu propósito Use nomes que revelam seu propósito Digamos que esse código seja parte de um jogo que estamos desenvolvendo, chamado Campo Minado. Percebemos que o tabuleiro é uma lista de células chamada alista. Por quê não chamá-la de tabuleiro? Cada quadrado do tabuleiro é representado por um vetor simples. Mais tarde descobrimos que a posição zero armazena um vetor de status e que o valor 4 significa marcado com uma bandeirinha. Ao dar essas explicações como poderia ficar o código? Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 7/25

Use nomes que revelam seu propósito 1 public List<int[]> peguecelulasmarcadas() { 2 List<int[]> celulasmarcadas = new ArrayList<int[]>(); 3 for (int[] celula: tabuleiro) 4 if (celula[status] == BANDEIRA) 5 celulasmarcadas.add(celula); 6 return celulasmarcadas; 7 } Listagem 2: Código limpo! Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 8/25

Use nomes que revelam seu propósito Use nomes que revelam seu propósito E se a célula ao invés de ser um vetor de inteiros, fosse uma célula propriamente dita? 1 public List<Celula> peguecelulasmarcadas() { 2 List<Celula> celulasmarcadas = new ArrayList<Celula>(); 3 for (Celula celula: tabuleiro) 4 if (celula.estamarcada()) 5 celulasmarcadas.add(celula); 6 return celulasmarcadas; 7 } Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 9/25

Evite informações erradas! Evite informações erradas Variável com o nome hp - Talvez você queria referir-se ao valor de uma hipotenusa, mas o nome hp é o nome de uma plataforma e pode confundir outros programadores. Variável com list em seu nome - Não nomeie uma variável como accountlist a não ser que ela seja realmente um List. A palavra list (lista) significa muito para programadores. Se a variável não é um list, então não use isso no seu nome. Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 10/25

Evite informações erradas Evite informações erradas Evite nomes muito parecidos. XYZControllerForEfficientHandlerOfStrings XYZControllerForEfficientStorageOfStrings Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 11/25

Evite informações erradas Evite informações erradas Outro típico exemplo que gera erros é o L minúsculo e o O maiúsculo. O problema é que eles se parecem com 1 (um) e 0 (zero), respectivamente. 1 int a = 1; 2 if ( O == 1) 3 a = O1; 4 else 5 l = 01; Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 12/25

Faça distinções significativas Faça distinções significativas Se você possui coisas diferentes que possuem mesmo significado, não significa que terão o mesmo nome, pois, como você já sabe, isso é proibido! Porém, alguns programadores simplesmente transformam essas variáveis em sequências como: a1, a2, a3, etc. 1 public static void copychars(char a1[], char a2[]{ 2 for (int i = 0; i < a1.length; i++) { 3 a2[i] = a1[i]; 4 } 5 } Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 13/25

Use nomes pronunciáveis Use nomes pronunciáveis O ser humano é muito bom com as palavras. Uma parte do cérebro é responsável pelo conceito de palavras. E por definição as palavras são pronunciáveis. Seria uma lástima não tirar proveito deste tipo desta importante função do nosso cérebro. Um nome que você não pode pronuncia-lo, não terá como discutir sobre tal nome sem parecer um idiota. 1 int bcr3cnt = pszqint; Bem, aqui no bê cê erre três cê ene tê, temos um pê esse zê quê int. Lembre-se: Programação é uma atividade social! Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 14/25

Use nomes pronunciáveis Use nomes pronunciáveis Veja a diferença: 1 class DtaRcrd102 { 2 Date genymdhms; 3 Date modymdhms; 4 String pszqint = "102"; 5 } Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 15/25

Use nomes pronunciáveis Use nomes pronunciáveis Veja a diferença: 1 class Consumidor { 2 Date datadegeracao; 3 Date datademodificacao; 4 String registroid = "102"; 5 } Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 16/25

Use nomes passíveis de busca Use nomes passíveis de busca Nomes curtos tem um problema bem particular: São difícies de serem localizados ao longo do texto. Buscar pela palavra MAX_CLASSES_PER_STUDENT é fácil, porém, experimente localizar pelo número 7. Se uma variável ou constante pode ser vista ou usada em vários lugares dentro do código, é imperativo atribuir um nome fácil para busca. Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 17/25

Use nomes passíveis de busca Use nomes passíveis de busca Compare 1 for (int j = 0; j < 34; j++) { 2 s += (t[j]*4)/5/ 3 } Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 18/25

Use nomes passíveis de busca Use nomes passíveis de busca Com 1 int diasreaispordiasideais = 4; 2 const int DIAS_TRABALHADOS_POR_SEMANA = 5; 3 int soma = 0; 4 5 for (int j=0; j< NUMERO_DE_TAREFAS; j++) { 6 int diastrabalhados = tarefasestimadas[j] * diasreaispordiasideais; 7 int tarefassemanais = (diasreais / DIAS_TRABALHADOS_POR_SEMANA); 8 soma += tarefassemanais; 9 } Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 19/25

A notação húngara A notação húngara Antigamente, tinhamos que lidar com limites de tamanho para nomes. Fortran nos forçava-nos tornar a primeira letra uma indicação para o tipo. Versões anteriores de BASIC nos permitia apenas uma letra mais um dígito. A Notação Húngara (NH) inovou essas limitações. Atualmente, não é mais necessário fazer isto. Não é necessário definir o tipo para a variável pois eles são muito auto-explicativos. Se quiser saber mais sobre a notação húngara acesse: http://pt.wikipedia.org/wiki/nota%c\3%a7% C3%A3o_h%C3%BAngara Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 20/25

Nomes de Classes e Objetos Nomes de classes e objetos Classes e objetos devem ter substantivos como nomes (Cliente, Pagina, Conta, Endereco). Evite palavras como Gerenciador, Processador, Dados ou Informacao. Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 21/25

Nomes de Métodos/Funções Nomes de Métodos/Funções Os nomes de métodos/funções devem ter verbos, como postarpagamento, excluipagina ou salvar. Deve-se nomear métodos de acesso, alteração e autenticação segundo seus valores e adicionar os prefixo get, set ou is de acordo com o padrão javabean. 1 1 http: //download.oracle.com/javase/tutorial/javabeans/ Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 22/25

Selecione uma palavra por conceito Selecione uma palavra por conceito Selecione uma palavra por conceito abstrato e fique com ela. É confuso usar as palavras pegar, obter e recuperar para o mesmo tipo de ação para classes/funções diferentes. Você precisa ficar lembrando qual é o nome daquela função que exclui registros naquela classe... Qual a diferença entre GerenciadorDeDispositivo e ControladorDeProtocolo? Ambos são drivers? Fazem coisas parecidas? Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 23/25

Não faça trocadilhos Não faça trocadilhos Não use a mesma palavras para conceitos diferentes. Exemplo: A palavra add geralmente é usada quando se adiciona itens em uma lista. Porém, poderia significar que você está fazendo uma soma. Ou talvez, poderia significar que você está concatenando strings. Não deixe que o contexto defina o que a palavra significa. Adote um significado e fique com ele. Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 24/25

E quando não houver uma solução à la programador? Se você não tem um nome técnico para dar, então, use algo que seja do domínio do problema. Assim, quem ler seu código poderá pelo menos perguntar a um especialista o significa algo no seu código. Prof. Fabrízzio Alphonsus A. M. N. Soares Boas Práticas de Programação 25/25