Você está na página 1de 50

Implementao - IV

Implementao - IV

Nomes Estruturas de controle Expresses Leiaute de programa Comentrios

2002 Wilson de Pdua Paula Filho

Nomes

Diretrizes para nomes:

descrever o que representam:


de forma completa e acurada; princpio fundamental da escolha de nomes; nomes orientados para o problema so melhores que orientados para a implementao; qualidade dos identificadores mais importante que qualidade dos comentrios; nome deve descrever o contedo e/ou uso do objeto;

representar palavras ou frases do idioma utilizado:


2002 Wilson de Pdua Paula Filho

Nomes

Cdigo para distribuio internacional:

nomes e comentrios em ingls. nos nomes de rotinas, usar consistentemente:

Identificadores em portugus:

infinitivo (de preferncia), imperativo ou indicativo presente; se a linguagem os permitir (Java); se o compilador o permitir.
2002 Wilson de Pdua Paula Filho

usar caracteres acentuados nos identificadores:

nos comentrios, usar grafia correta:

Nomes

Nomes longos:

separar palavras constituintes;


por maisculas e minsculas; evitar identificadores totalmente maisculos;

ou separar por sublinhados;

Abreviaes:

evitar, se possvel: se necessrio, padronizar a forma de abreviao; colocar nome completo nos comentrios:

de preferncia na forma de uma tabela de abreviaes;


2002 Wilson de Pdua Paula Filho

Nomes

Pronncia:

nomes devem ser pronunciveis: evitar nomes que precisem ser soletrados; deve-se poder ler o cdigo ao telefone, sem dificuldades;

Diferenciao:

nomes devem ser diferenciveis pelo seus primeiros caracteres: torna o cdigo mais fcil de ler; evitar diferenciaes atravs de sufixos numricos; exemplo: temp, temp2 .

2002 Wilson de Pdua Paula Filho

Nomes

Notao hngara e outras notaes de baixo nvel:


evitar; se houver necessidade de diferenciar entre identificadores de constantes, definies de tipos e variveis, prefervel usar sufixos (ex.: _c, _t, _v); este sufixo no deve ser a nica diferena entre dois identificadores;

Nomes predefinidos no ambiente de desenvolvimento:


evitar duplicao; exceo - quando esto sendo sendo redefinidos.

2002 Wilson de Pdua Paula Filho

Nomes

Evitar:

nomes diferenciados por caracteres que podem ser confundidos:

grupos {1, I, l}, {0, O}, {2, Z}, {5, S} e {6, G}; por exemplo, int para Indice da Nova Tabela;

abreviaes enganosas:

nomes com significados similares:

por exemplo, PrximoCarter e ProxCar para dois objetos diferentes.

2002 Wilson de Pdua Paula Filho

Nomes

Evitar:

nomes semelhantes com significados diferentes:

por exemplo, NmeroDeLinhas e NmeroDaLinha;

nomes homfonos. nomes com erros de ortografia. nomes que muitas pessoas grafam de forma errada.

2002 Wilson de Pdua Paula Filho

Nomes

Consideraes especiais de nome:

ndices de malha:

usar os tradicionais i, j e k apenas em casos muito simples; preferir nomes significativos, como ContadorDeRegistros; cuidado especial no caso de malhas aninhadas; devem indicar significado do estado ( DadoPronto, TipoDeRelatrio); no qualquer coisa, como flag.

variveis de status:

2002 Wilson de Pdua Paula Filho

Nomes

Consideraes especiais de nome:

variveis booleanas:

usar nomes significativos, como Feito, Erro, Achou, Sucesso, que implicam um valor Verdadeiro ou Falso; evitar nomes que no indicam um valor lgico, como Status; evitar nomes negativos, como NoAchou.

2002 Wilson de Pdua Paula Filho

Nomes

Consideraes especiais de nome:

variveis temporrias:

nomes que indiquem o papel ou significado da varivel; evitar o uso de temp; prefixo comum para nomes do mesmo grupo; CorAzul, CorVermelha, CorVerde; nomes indicativos do significado (TotalDeCiclos); no de seu valor (Cinco).
2002 Wilson de Pdua Paula Filho

tipos enumerados:

constantes:

Estruturas de controle

Seqncia de execuo:

deve ser reconhecvel pela leitura do cdigo; pode ser realada:

pela forma de diviso em funes; pelos nomes das funes; pelos nomes dos parmetros; pela documentao.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Organizao do cdigo:

organizar para que possa ser lido de cima para baixo; minimizar o alcance (span) das variveis:

a distncia entre instrues em que a varivel referenciada;


a distncia entre a primeira e a ltima referncia a uma varivel.

minimizar o tempo vivo da varivel:

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Instrues correlatas:

devem ser agrupadas;

separadas por linhas em branco e de comentrio.

tipos comuns de correlao - grupos de instrues que correspondem a:


uma caixa de um fluxograma; uma fase de processamento; uma malha etc.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Ifs simples:

primeiro caso normal, depois excees; cuidado com caso de igualdade; caso normal depois do if, e no depois do else; evitar clusulas vazias de if; se no houver clusula else, comentar por qu:

exceto para tratamento de excees; no lugar correto.

verificar se clusulas esto corretas;

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Cadeias de ifs.

Exemplo de cadeia de ifs:

if ( <caso 1> ) { <ao 1>; } else if ( <caso 2> ) { <ao 2>; } else if ( <caso n> ) { <ao n>; } else { < ao de exceo>; }

2002 Wilson de Pdua Paula Filho

Estruturas de controle

No utilizar else final de uma cadeia de ifs para tratar caso restante:

reserv-lo para tratar condies de exceo; simplificar testes complicados;

atravs de chamadas a funes booleanas;

verificar se todos os casos esto cobertos; se a linguagem dispuser de seleo mltipla:

prefervel s cadeias de ifs.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Selees mltiplas (case/switch):

usar quando ordem dos casos irrelevante; classificar casos; manter juntos casos com mesmo cdigo; manter cada caso simples; usar uma de seleo simples. caso padro apenas para tratar excees:

no para apanhar casos remanescentes.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Usar tipo de malha adequado iterao:

diferem pelo teste de terminao: no incio ( while () {} ); no final ( do {} while () ); no meio ( while (TRUE) {; if () break; } );

mais robusta em relao a modificaes.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Usar tipo de malha adequado iterao:

entrada na malha deve ocorrer em um nico ponto;

cdigo de iniciao da malha deve ser colocado imediatamente antes dela; preferncia por tipos ordinais ou enumerados; sempre com nomes significativos.

variveis de controle das malhas:


2002 Wilson de Pdua Paula Filho

Estruturas de controle

Usar for quando a malha for executada um nmero especfico de vezes.


Incremento do contador do for deve ser 1;

na maioria dos casos;


mesmo quando permitidas pela linguagem.

Formulaes complexas so prejudiciais legibilidade:

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Usar um formato padronizado e facilmente reconhecvel para malhas eternas.

Por exemplo, o teste while ( TRUE ).

Evitar malhas vazias.

Pelo menos colocar um comentrio dentro do corpo desta ( //Faz nada).

2002 Wilson de Pdua Paula Filho

Estruturas de controle

A condio de sada da malha deve ser identificvel.

De preferncia, um nico ponto de sada da malha.

O uso de efeitos colaterais dentro do teste de terminao das malhas deve ser evitado.

Ou pelo menos documentado com destaque.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Cada malha deve executar apenas uma funo. Comprimento das malhas:

caber em uma tela ou um folha de listagem; usar no mximo trs nveis de aninhamento; em malhas longas, redobrar o cuidado com a clareza e a documentao.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Estruturas especiais de controle.

Gotos s devem ser usados:


em casos extremos; onde ficaria mais ilegvel sem o goto do que com ele. para melhorar a legibilidade.

S usar o return:

S usar a recurso:

quando puder provar que ela tem limite.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Simplificar as expresses de teste usadas para controle.


Parti-las;

se necessrio introduzindo novas variveis booleanas.

Usar funes booleanas. Empregar tabelas de deciso. Usar parnteses. Usar a regra de De Morgan.

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Organizar os testes numricos:


na direo dos pontos de uma reta: para selecionar os valores dentro de uma intervalo, usar a forma:

min < i && i < max // ---min iii max--i < min || max < i // iii min---max iii

para valores fora do intervalo usar:

2002 Wilson de Pdua Paula Filho

Estruturas de controle

Minimizar os nveis de aninhamento.


Retestar condies;

quando contribuir para reduzir o aninhamento. em cadeias de if; em selees mltiplas.

Converter conjuntos de ifs aninhados:


Passar cdigo profundamente aninhado:

para rotina independente; ou redesenhar.

2002 Wilson de Pdua Paula Filho

Expresses

Precedncia dos operadores.

Ordem de precedncia assumida, da mais alta para a mais baixa:


operandos; operadores unrios; operadores multiplicativos; operadores aditivos; operadores relacionais; operadores lgicos.

2002 Wilson de Pdua Paula Filho

Expresses

Operadores:

Se a regra no fornecer a precedncia correta:

usar parnteses.

Se o valor correto de uma expresso depende de avaliao abreviada:

anotar em um comentrio.

2002 Wilson de Pdua Paula Filho

Expresses

Efeitos colaterais:

Evitar o uso de efeitos colaterais:


por exemplo, chamada de funes com parmetros passados por referncia; ou que modifiquem variveis globais.

No usar valores de variveis modificadas por efeitos colaterais dentro da mesma expresso.

Em alguns casos, efeitos colaterais so de praxe; ler e testar fim de arquivo na mesma expresso, em C/C++.

2002 Wilson de Pdua Paula Filho

Leiaute de programa

Princpios:

leiaute deve refletir estrutura lgica:


lei fundamental da formatao; espao em branco principal ferramenta de leiaute; exemplo - delimitadores consistentes; no necessariamente a esttica; exemplo - usar {} depois de um if.

representao da estrutura deve ser consistente:

objetivo principal a legibilidade:


deve ser resistente a modificaes:

2002 Wilson de Pdua Paula Filho

Leiaute de programa

Espaamento em expresses:

evitar espaos entre operadores unrios e seus operandos:

-a !x

pelo menos um espao de cada lado de operador binrio:

x = a / *p < -b; registro.campo

operadores de seleo adjacentes aos operandos:

2002 Wilson de Pdua Paula Filho

Leiaute de programa

Espaamento em expresses:

separadores de itens devem:


seguir imediatamente objeto anterior; ser seguidos por pelo menos um espao; por exemplo, vrgula e ponto-e-vrgula; sem espao depois da abertura; sem espao antes do fechamento: func(fix + var[linha, coluna])

smbolos parentticos ( ( ), [ ], { } ):

2002 Wilson de Pdua Paula Filho

Leiaute de programa

Endentao nas estruturas de controle:


ocupar de dois a quatro espaos, se feita com tabulaes:

indicar em comentrio;

consistente, sem dupla endentao:


while (<expresso>) { <instruo1>; <instruo2>; }
2002 Wilson de Pdua Paula Filho

Leiaute de programa

Declaraes de dados:

colocadas uma por linha; alinhamento do tipo: int idLinha; int idColuna; Ponto inferiorEsquerdo; Ponto superiorDireito;

2002 Wilson de Pdua Paula Filho

Leiaute de programa

Linhas em branco:

instrues correlatas devem ser agrupadas:


sem linhas em branco ou endentao desnecessrias; declaraes devem ser separadas do cdigo executvel; exceo: variveis de curtssima durao;

pelo menos uma linha em branco deve separar comentrio do cdigo precedente. no exceder 80 caracteres.
2002 Wilson de Pdua Paula Filho

Tamanho mximo das linhas de cdigo:

Leiaute de programa

Quebra de linhas:

se instruo no cabe em 80 caracteres:

parti-la nos pontos de melhor legibilidade; cada linha deve ser alinhada; e comeada por parmetro.

em listas de parmetros:

void mtodo(int parCurto1, float parCurto12, int primeiroParmetroDeNomeLongo, float segundoParmetroDeNomeLongo, float terceiroParmetroDeNomeLongo)
2002 Wilson de Pdua Paula Filho

Comentrios

Maus comentrios:

obsoletos, inexistentes, irrelevantes;

por exemplo: piadas; por exemplo: A = 1; por exemplo: A = 1; // // Faz A igual a 1. ; Faz A igual a 2. ;

bvios:

errados:

autopromocionais, insultuosos, obscenos, politicamente incorretos e similares.

2002 Wilson de Pdua Paula Filho

Comentrios

Bons comentrios:

feitos enquanto se codifica; fceis de modificar;

por exemplo, sem asteriscos alinhados manualmente;


de preferncia ao como; no instrues individuais;

focalizam o porqu;

referentes a blocos de instrues;

2002 Wilson de Pdua Paula Filho

Comentrios

Bons comentrios:

colocados antes do cdigo ao qual se aplicam; documentam truques;

se indispensveis;

evitam abreviaes.

2002 Wilson de Pdua Paula Filho

Comentrios

Prlogos de unidades devem descrever:


entradas, sadas e hipteses sobre esta unidade;

no o seu contedo; mdulos - nome, finalidade, problemas conhecidos; rotinas - nome, finalidade, parmetros, problemas conhecidos, excees.

exemplos de prlogos:

2002 Wilson de Pdua Paula Filho

Comentrios

Prlogos de unidades:

no duplicar dados da gesto de configuraes;


exemplos: autor, nmero e data da reviso; incluir referncias a esses dados, caso a ferramenta de gesto de configuraes faa manuteno automtica; para reviso de cdigo, devem ser apresentados junto com o respectivo cdigo.

2002 Wilson de Pdua Paula Filho

Comentrios

Prlogos de unidades podem incluir:


instrues para reutilizao:

formato, valores, tipos e limites dos parmetros;

instrues para modificao; instrues para compilao. precedem sees importantes; descrevem processamento feito na seo;

Comentrios de bloco:

focalizando seu objetivo


2002 Wilson de Pdua Paula Filho

Comentrios

Em declaraes de dados:

usar comentrios para aspectos no descritos pelo nome:


unidades de dados numricos; faixa de valores aceitveis; significados codificados; limitaes sobre dados de entrada; indicadores em nvel de bit.

nome no comentrio consistente com nome no cdigo; dados globais sempre comentados.

2002 Wilson de Pdua Paula Filho

Comentrios

Cuidado com comentrios de linha:


aparecem no final das linhas de cdigo:

instruo // comentrio em linhas isoladas (tendem a repetir o que a linha faz); quanto se aplicam a mltiplas linhas;

devem ser evitados:


podem ser usados:

para comentar declaraes de dados; para anotaes de manuteno; para marcar fim de blocos ( //end if ).
2002 Wilson de Pdua Paula Filho

Comentrios

Comentrios sempre atualizados.

Todo programador que altera o cdigo tambm responsvel por alterar:


os respectivos comentrios; outras formas de documentao. por exemplo, com leiaute complexo.

Evitar estilos que desencorajem modificaes:

2002 Wilson de Pdua Paula Filho

Comentrios

Cdigo inacabado:

classificao:

cdigo no-funcional; cdigo parcialmente funcional; cdigo suspeito; cdigo que precisa de aperfeioamento;

cdigo parcialmente funcional o mais perigoso; todos os tipos devem ser marcados:

atravs de comentrios padronizados.

2002 Wilson de Pdua Paula Filho

Comentrios

Referncias a documentos embutidas em comentrios:

devem ser padronizadas; devem identificar documento;

item especfico associado ao cdigo em questo; uso de hiperligaes recomendvel.

para documentao on-line:

2002 Wilson de Pdua Paula Filho

Você também pode gostar