Académique Documents
Professionnel Documents
Culture Documents
Implementao - III
Rotinas
Viso geral:
classe, em linguagens orientadas a objetos mtodos, em linguagens orientadas a objetos; variveis ou atributos, em linguagens orientadas a objetos.
Rotinas
Conceitos:
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:
Rotinas
mais propensas a erros; diminuindo o nmero de linhas de cada rotina; separando cdigo com ordem de execuo independente; estruturas de dados;
Rotinas
Rotinas
melhorar o desempenho;
agrupando cdigo otimizvel; de uma famlia de programas; seqncias de acesso a mecanismos persistentes; ou dispositivos de hardware;
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:
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.
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
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
Rotinas
Graus de acoplamento.
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 controle:
Rotinas
Graus de acoplamento.
as rotinas fazem uso dos mesmos dados globais. uma rotina usa cdigo interno ou altera dados locais de outra.
Acoplamento patolgico:
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.
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.
Rotinas
rotinas cujo foco valor retornado podem usar descrio do valor de retorno:
devem ser to longos quanto necessrio para descrever o que a rotina faz:
Rotinas
mesmo que linguagem no o exija; entradas, modificados, sadas; objetos ou estruturas cujos atributos ou itens so modificados devem ser considerados parmetros modificados;
Rotinas
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;
Rotinas
mesmo que a linguagem o permita; precondies e ps-condies; principalmente se estas no forem verificadas por cdigo;
Rotinas
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:
Pseudolinguagem
em nvel de desenho detalhado; na UML, usada em scripts e anotaes. diagramas de estado; notaes lgicas formais.
Pseudolinguagem
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
Pseudolinguagem
Benefcios da pseudolinguagem:
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
Programao defensiva
Asseres:
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:
Programao defensiva
todos os dados de fontes externas; todos os parmetros de entrada, sempre que razovel; de forma consistente;
Programao defensiva
mecanismos de depurao:
podem ser novamente introduzidos em manuteno; desativar cdigo que trata de erros menores;
Programao defensiva
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:
Diretrizes de implementao
Linguagens de implementao:
extenses de aplicativos:
Diretrizes de implementao
minimizar erros;
clareza e limpeza.
Diretrizes de implementao
dados:
Tipos de dados
na linguagem, em bibliotecas padres etc. para as espcies de dados do domnio do problema que representam...
Tipos de dados
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:
Tipos de dados
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:
Tipos de dados
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.
Tipos de dados
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;
Tipos de dados
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;
Tipos de dados
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;
Tipos de dados
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!
Tipos de dados
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!
Variveis
Variveis
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.
Variveis
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
Variveis
so preferveis a variveis locais a um mdulo; que so preferveis a variveis globais. devem ser localizadas o mais prximas possvel.
Variveis
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.
Variveis
efeitos colaterais; pseudonmia (uso de diferentes nomes para a mesma coisa); impedimentos reutilizao de cdigo; impedimentos reentrncia; quebra da modularidade, em geral.
Variveis
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;
Variveis
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;