Vous êtes sur la page 1sur 49

Implementao - III

Implementao - III

Rotinas Pseudolinguagem Programao defensiva Diretrizes de implementao Tipos de dados Variveis

2002 Wilson de Pdua Paula Filho

Rotinas

Viso geral:

interface de um mdulo de nvel baixo...

classe, em linguagens orientadas a objetos mtodos, em linguagens orientadas a objetos; variveis ou atributos, em linguagens orientadas a objetos.

...deve ser feita apenas atravs de rotinas;

dados devem ser privados em relao ao mdulo;

2002 Wilson de Pdua Paula Filho

Rotinas

Conceitos:

operao (conceito de anlise):

implementada por meio de uma ou mais rotinas (conceito de desenho); sub-rotina, funo, procedimento, mtodo ou membro de funo; subprogramas livres; pode retornar ou no um valor.

dependendo da linguagem:

2002 Wilson de Pdua Paula Filho

Rotinas

Critrios para criao de rotinas:


isolar operaes e expresses complexas;

mais propensas a erros; diminuindo o nmero de linhas de cada rotina; separando cdigo com ordem de execuo independente; estruturas de dados;

aumentar a legibilidade do cdigo;

ocultar ordem de execuo de seqncias;

ocultar detalhes de implementao;

2002 Wilson de Pdua Paula Filho

Rotinas

Critrios para criao de rotinas:


ocultar acessos a dados globais;

se a linguagem os permitir; se a linguagem os permitir;

ocultar operaes sobre apontadores;

ocultar cdigo no-portvel; evitar duplicao de cdigo;

agrupando seqncias similares de cdigo;

2002 Wilson de Pdua Paula Filho

Rotinas

Critrios para criao de rotinas:


melhorar o desempenho;

agrupando cdigo otimizvel; de uma famlia de programas; seqncias de acesso a mecanismos persistentes; ou dispositivos de hardware;

agrupar cdigo que pode diferir entre variantes;

centralizar pontos de controle;

promover reutilizao de cdigo.

2002 Wilson de Pdua Paula Filho

Rotinas

Formas de coeso.

funcional:

rotina executa uma nica tarefa (simples); rotina executa uma seqncia de tarefas; correlatas e encadeadas; rotina executa seqncia de tarefas; usa um conjunto comum de dados; rotina executa conjunto de tarefas coincidentes no tempo; por exemplo, iniciao;

seqencial:

comunicacional:

temporal:

2002 Wilson de Pdua Paula Filho

Rotinas

Formas de coeso.

procedimental:

rotina executa uma seqncia de tarefas ordenadas; mas no correlatas nem encadeadas; rotina executa uma dentre vrias tarefas; de acordo com o valor de varivel de estado; if else if else, switch; rotina executa tarefas no correlatas.
2002 Wilson de Pdua Paula Filho

lgica:

coincidente:

Rotinas

Formas de coeso:

Todas as rotinas devem exibir coeso pelo menos comunicacional. A coeso temporal pode ser usada ocasionalmente. Os nveis inferiores de coeso devem ser evitados.

2002 Wilson de Pdua Paula Filho

Rotinas

Comunicao entre rotinas:

cardinalidade

nmero de objetos comunicados entre duas rotinas; por exemplo, nmero de parmetros; grau de controle de acesso; graus crescentes de intimidade:

intimidade

listas de parmetros; atributos de classe privados; atributos de classe pblicos; variveis globais; arquivos ou bancos de dados;
2002 Wilson de Pdua Paula Filho

Rotinas

Comunicao entre rotinas:

visibilidade

grau de visibilidade dos dados passados; dados passados como parmetros separados so mais visveis do que quando agrupados em uma estrutura; grau de liberdade da rotina chamadora na montagem dos dados para a rotina chamada; por exemplo, a necessidade de montar uma estrutura complexa acarreta baixa flexibilidade.

flexibilidade

2002 Wilson de Pdua Paula Filho

Rotinas

Graus de acoplamento.

acoplamento de dados simples:

todos os dados passados como parmetros no estruturados; usam parmetros que so estruturas de dados; uma rotina diz outra o que fazer; passando, por exemplo, uma varivel de estado;

acoplamento de estrutura de dados:

acoplamento de controle:

2002 Wilson de Pdua Paula Filho

Rotinas

Graus de acoplamento.

Acoplamento de dados globais:

as rotinas fazem uso dos mesmos dados globais. uma rotina usa cdigo interno ou altera dados locais de outra.

Acoplamento patolgico:

2002 Wilson de Pdua Paula Filho

Rotinas

Tamanho das rotinas:

rotinas acima de 150-200 linhas de cdigo devem exibir coeso funcional ou seqencial;

mas no devem ser divididas artificialmente; apenas para limitar tamanho; em rotinas separadas: se uma subseqncia for comum a mtodos de uma classe, transform-la em operao privada desta classe.

transformar subseqncias genricas de cdigo:

2002 Wilson de Pdua Paula Filho

Rotinas

Nomes das rotinas:


nomes que descrevam o que a rotina faz; verbos com significados fortes:

em linguagens no baseadas em objetos, incluir tambm o objeto da rotina; em linguagens orientadas objetos, a referncia ser feita pelo nome do objeto; por exemplo, ImprimirRelatorio versus Relatrio.Imprimir.

2002 Wilson de Pdua Paula Filho

Rotinas

Nomes das rotinas:

rotinas cujo foco valor retornado podem usar descrio do valor de retorno:

por exemplo, ImpressoraPronta ou Impressora.Pronta;

devem ser to longos quanto necessrio para descrever o que a rotina faz:

at 15 a 20 caracteres; operaes semelhantes correspondem a nomes semelhantes (obter, consultar etc.).

2002 Wilson de Pdua Paula Filho

Rotinas

Listas de parmetros - facilitar uso da rotina:


casar tipos dos parmetros formais e reais;

mesmo que linguagem no o exija; entradas, modificados, sadas; objetos ou estruturas cujos atributos ou itens so modificados devem ser considerados parmetros modificados;

colocar parmetros na ordem:


2002 Wilson de Pdua Paula Filho

Rotinas

Listas de parmetros - facilitar uso da rotina:

colocar cdigos de status ou erro em ltimo lugar:


a menos de prticas em contrrio da linguagem; exemplo: cdigos de retorno, em C; tratamento de excees prefervel, se disponvel;

usar mesma ordem para parmetros similares; s passar parmetros realmente usados;

a menos de prticas em contrrio da linguagem; exemplo: funes passadas como parmetros, em C;

2002 Wilson de Pdua Paula Filho

Rotinas

Listas de parmetros - facilitar uso da rotina:


no usar parmetros como variveis de trabalho;

mesmo que a linguagem o permita; precondies e ps-condies; principalmente se estas no forem verificadas por cdigo;

documentar suposies a respeito dos parmetros;


limitar nmero de parmetros a cerca de sete mais ou menos dois;

aplicao da regra de Miller;

2002 Wilson de Pdua Paula Filho

Rotinas

Listas de parmetros - facilitar uso da rotina:

passar apenas partes usadas na rotina chamada;


passar toda a estrutura quando representar tipo abstrato de dados; se objeto todo interessar rotina chamada, passar como parmetro; se o interesse for apenas em um atributo: passar o valor de retorno de mtodo de consulta ao atributo; sobre mecanismo de passagem de parmetros do compilador: torna o cdigo mais portvel e estvel.

no utilizar suposies:

2002 Wilson de Pdua Paula Filho

Pseudolinguagem

Notao para definio do comportamento:


em nvel de desenho detalhado; na UML, usada em scripts e anotaes. diagramas de estado; notaes lgicas formais.

Pode ser combinada com:


2002 Wilson de Pdua Paula Filho

Pseudolinguagem

Regras de uso da pseudo-linguagem.


usar frases da linguagem natural;

que descrevam com preciso operaes especficas; abaixa nvel de abstrao; restringe desnecessariamente a pseudolinguagem; no o mecanismo de implementao na linguagem-alvo; tornar a traduo para a linguagem-alvo quase imediata; para um programador proficiente.
2002 Wilson de Pdua Paula Filho

evitar detalhes de sintaxe da linguagem-alvo;


descrever a inteno do desenho;

descer em nvel de detalhe suficiente;


Pseudolinguagem

Benefcios da pseudolinguagem:

facilitar revises do desenho detalhado;

reduzir o esforo adicional de inspeo de cdigo; permitindo aumentar detalhe do desenho em passadas consecutivas; antes que este tenha sido comprometido em cdigo; maior parte de um bom pseudocdigo pode ser aproveitada como comentrios.
2002 Wilson de Pdua Paula Filho

dar suporte ao refinamento iterativo;

facilitar as mudanas do desenho detalhado;

diminuir o esforo de comentar;

Programao defensiva

Asseres:

funes que testam validade de determinadas hipteses:


precondies vlidas ao entrar-se em uma rotina; ps-condies vlidas imediatamente aps a sada da rotina; condies invariantes ser preservadas por malha de repetio; podem fazer parte da linguagem; podem fazer parte de uma plataforma de implementao; podem ser criadas pelo programador.

alternativas:

2002 Wilson de Pdua Paula Filho

Programao defensiva

Proteo contra possveis dados errados:

verificar os valores de:


todos os dados de fontes externas; todos os parmetros de entrada, sempre que razovel; de forma consistente;

tratar os erros em parmetros;

usar mecanismos de tratamento de excees.

2002 Wilson de Pdua Paula Filho

Programao defensiva

Planejar desativao da depurao:

mecanismos de depurao:

devem ser retirados em verses de operao: asseres, mensagens de depurao;

podem ser novamente introduzidos em manuteno; desativar cdigo que trata de erros menores;

ou provoca a parada do sistema.

2002 Wilson de Pdua Paula Filho

Programao defensiva

Planejar desativao da depurao.

deixar ativo:

cdigo que trata de erros importantes; ou permite a degradao gradual: mensagens devem indicar que se trata de erro interno; e recomendar contato com suporte tcnico;

maneiras de administrar:

controle por um sistema de gesto de configuraes; uso de pr-processadores e compilao condicional; uso de cotos de depurao.
2002 Wilson de Pdua Paula Filho

Diretrizes de implementao

Linguagens de implementao:

orientadas a objetos:

Smalltalk, Java, C#, C; JavaScript, VBScript, Perl, PHP, Python; Visual Basic, Delphi;

scripts:

prototipagem:

2002 Wilson de Pdua Paula Filho

Diretrizes de implementao

Linguagens de implementao:

extenses de aplicativos:

VBA, LotusScript; SQL, em vrios dialetos.

consultas a bancos de dados:

2002 Wilson de Pdua Paula Filho

Diretrizes de implementao

Objetivo das diretrizes de implementao:

minimizar erros;

correo da lgica; correo das interfaces robustez da estrutura;

facilitar a manuteno do cdigo;

promover sua legibilidade;

clareza e limpeza.

2002 Wilson de Pdua Paula Filho

Diretrizes de implementao

Tipos de diretrizes de implementao:

dados:

tipos de dados; variveis; nomes;

estruturas de controle; expresses; leiaute de cdigo; comentrios.

2002 Wilson de Pdua Paula Filho

Tipos de dados

No redefinir tipos predefinidos do ambiente:

na linguagem, em bibliotecas padres etc. para as espcies de dados do domnio do problema que representam...

Usar nomes funcionalmente orientados:

coordenadas, moedas, idades etc.;


InteiroGrande, TextoLongo.
2002 Wilson de Pdua Paula Filho

... no para aspectos de implementao:

Tipos de dados

Diretrizes para tipos simples:

tipos numricos em geral:


usar constantes no lugar de literais (exceto 0 e 1); verificar se o valor dos divisores no pode ser 0; explicitar todas as converses de tipo; evitar comparaes de tipos mistos;

inteiros:

possibilidades de truncamento. possibilidade de estouro (overflow); inclusive em resultados intermedirios;


2002 Wilson de Pdua Paula Filho

Tipos de dados

Diretrizes para tipos simples:

nmeros de ponto flutuante:


evitar somas e subtraes de nmeros de magnitudes muito diferentes; evitar comparaes de igualdade; considerar overflow e underflow; considerar erro de arredondamento; constantes em lugar de literais; agrupar em um arquivo de recursos;

caracteres e textos:

2002 Wilson de Pdua Paula Filho

Tipos de dados

Diretrizes para tipos simples:

variveis booleanas:

fazer com que variveis booleanas ajudem a documentar; substituir testes complicados por variveis booleanas intermedirias; criar seu prprio tipo booleano, se no existir na linguagem.

2002 Wilson de Pdua Paula Filho

Tipos de dados

Diretrizes para tipos complexos:

enumeraes (se a linguagem permitir):


facilitar a leitura; aumentar a confiabilidade promovendo checagens em tempo de compilao; facilitar modificaes; generalizar variveis booleanas; testar valores invlidos; reservar entrada para representar valores invlidos; se linguagem no tiver enumeraes, simul-las;

2002 Wilson de Pdua Paula Filho

Tipos de dados

Diretrizes para tipos complexos:

arranjos:

usar arranjos apenas para acesso seqencial, e no randmico; checar os pontos extremos dos arranjos; em arranjos multidimensionais, checar a ordem dos subscritos; em malhas aninhadas, cuidado com as confuses entre ndices; por via das dvidas, colocar elemento extra no final do arranjo;

2002 Wilson de Pdua Paula Filho

Tipos de dados

Diretrizes para tipos complexos:

apontadores (se a linguagem permitir):


isolar em rotinas especializadas; verificar antes de us-los; verificar variveis apontadas antes de us-las; anular o valor, depois de liber-los; usar apontadores extras, se isto tornar o cdigo mais legvel; simplificar expresses com apontadores;

2002 Wilson de Pdua Paula Filho

Tipos de dados

Diretrizes para tipos complexos:

apontadores (se a linguagem permitir):


controlar a alocao e liberao de apontadores; usar campos de verificao de erros, em variveis apontadas; documentar operaes, de preferncia em formato grfico; checar a ordem de liberao dos apontadores em listas; prover suporte para a exibio de apontadores; onde for possvel evitar apontadores, faz-lo; evitar, sempre que possvel!

2002 Wilson de Pdua Paula Filho

Tipos de dados

Diretrizes para tipos complexos:

tipos estruturados de dados (registros e estruturas):


esclarecer relacionamentos de dados; simplificar operaes sobre blocos de dados; simplificar listas de parmetros, desde que agrupamento seja lgico; reduzir encargos de manuteno; usar de preferncia objetos, se a linguagem o permitir!

2002 Wilson de Pdua Paula Filho

Variveis

Declarar sempre todas as variveis.

Se a linguagem tiver a opo de permitir declaraes implcitas:

desligar esta opo.

A declarao deve ficar prxima do primeiro uso da varivel:

tanto quanto a linguagem e as outras recomendaes deste padro permitirem.

2002 Wilson de Pdua Paula Filho

Variveis

As declaraes devem ter comentrios descritivos.

Os comentrios devem descrever:

as restries e hipteses relativas a essas variveis; os nomes completos, caso se use alguma abreviao.
Os tipos, nomes das variveis e comentrios devem ser alinhados em colunas.

Cada declarao deve ocupar uma linha.

2002 Wilson de Pdua Paula Filho

Variveis

Iniciar todas as variveis na declarao.


Tomar cuidado especial com contadores e acumuladores. Verificar onde pode haver necessidade de reiniciao. Pode ser til:

ligar mecanismos de iniciao padro do compilador; preencher a memria de trabalho com um padro determinado, no incio do programa. comentrio deve descrever o porqu deste valor; caso o contexto no o torne bvio.
2002 Wilson de Pdua Paula Filho

Caso a declarao do varivel atribua um valor inicial:


Variveis

Minimizar o escopo das variveis.

Variveis locais a uma rotina:


so preferveis a variveis locais a um mdulo; que so preferveis a variveis globais. devem ser localizadas o mais prximas possvel.

As referncias a uma mesma varivel:

Marcar claramente no leiaute da rotina:

grupos de linhas que focalizam certa varivel.

2002 Wilson de Pdua Paula Filho

Variveis

Usar cada varivel com uma nica finalidade.

No reutilizar nomes para propsitos diferentes. Evitar variveis com dois significados.

por exemplo, varivel que representa uma contagem se for positiva, e um cdigo de status se for negativa.

Conferir se todas as variveis declaradas so usadas.

2002 Wilson de Pdua Paula Filho

Variveis

Minimizar o uso de variveis globais.


Mesmo que a linguagem as permita. Tendem a introduzir srios problemas:

efeitos colaterais; pseudonmia (uso de diferentes nomes para a mesma coisa); impedimentos reutilizao de cdigo; impedimentos reentrncia; quebra da modularidade, em geral.

2002 Wilson de Pdua Paula Filho

Variveis

Possveis razes para usar variveis globais:

preservao de valores globais ao programa inteiro; simulao de constantes com nome; dados de uso extremamente comum; dados que so passados a rotinas de nvel profundo;

sem serem manipulados por rotinas de nvel intermedirio.

2002 Wilson de Pdua Paula Filho

Variveis

Precaues com variveis globais:

usar variveis globais s em ltimo caso; se possvel, usar variveis de mdulo; usar conveno que torne bvios os nomes globais; manter uma lista anotada das variveis globais; controlar os acessos s variveis globais; no esconder variveis globais em estrutura monstro;

para fingir que no as est usando.

2002 Wilson de Pdua Paula Filho

Vous aimerez peut-être aussi