A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Políticas Curso de aprofundamento em linguagem C.

Apresentações semelhantes


Apresentação em tema: "Políticas Curso de aprofundamento em linguagem C."— Transcrição da apresentação:

1 Políticas Curso de aprofundamento em linguagem C

2 Políticas de Programação Evitam erros comuns Ajudam no debug Menos tempo procurando um bug Redução de erros de runtime Podem tornar o código mais legível, eficiente e econômico

3 Passagem de Parâmetros Sempre const A não ser que sejam modificados Exceção para os tipos built-in (int, float, char...) Aplicar const preferencialmente a arrays e ponteiros Passagem de parâmetro do tipo struct deve ser feita preferencialmente através de ponteiros

4 Ponteiros Local de maior incidência de erros de runtime Alteração indevida, ou acesso a memória alheia leva a um comportamento não previsto. (ERRO!) Usar const na declaração sempre que possível const em arrays ou structs são aplicados a todos os membros

5 Ponteiros O const pode ser aplicado de várias formas a um ponteiro const char *str; char *const str; const char *const str; const char *const *const strList; Deve ser SEMPRE inicializado Se não houver valor inicial atribuir NULL

6 Variáveis Globais Comunicação de Threads Devem ser evitadas ao máximo Substituir globais por parâmetros da função que a referencia Quando for necessária a utilização proceder com as devidas declarações no módulo associado

7 Variáveis Globais Quando utilizada para comunicar processos lembrar de restringir o acesso concorrente Através de semáforos Se for usada dentro de laços declarar como volatile

8 Tempo de vida de Variáveis Classes de armazenamento Automático Tempo de vida resumido ao escopo da variável Estático Tempo de vida: duração do programa Armazenamento em Heap Tempo limite de vida determinado pelo programador

9 Tempo de vida de Variáveis Erros comuns Referenciar variáveis locais fora de seu escopo Atribuição de ponteiros que não tiveram sua memória liberada (resulta em memory leak) Como resolver? Variáveis que devem ser vistas fora de seu escopo devem ser alocadas na heap, e depois devidamente desalocadas Testar se os ponteiros apontam para um endereço válido (!NULL) e utilizar o free antes de qualquer atribuição

10 Tratamento de erros em C Compromisso com a eficiência Tratamento específico de erros é importante Como fazer o tratamento de erros? Através de códigos de erro Definidos como int ou byte (eficiência) Valores definidos como constantes

11 Tratamento de erros em C Transformação da função de acordo com o padrão de tratamento de erros Retorno vira parâmetro de saída Assumir que esses parâmetros estão devidamente alocados Parâmetros de saída são sempre ponteiros

12 Tratamento de erros em C Legibilidade no tratamento Padrões Se houver apenas um erro, a função retorna 0 (FALSE) quando ele ocorre e 1 (TRUE) quando não há erros Se existirem mais de um erro, 0 deve significar que tudo ocorreu normalmente, e os códigos de erro são distribuídos com os demais números (positivos) Definir Constantes de erro com nome legível e que referenciem a função.

13 Comando assert Serve para utilizar como sanity check Debug temporário Teste de situações que sempre deveriam ocorrer Caso não queira mais utilizá-los por questões de eficiência (release) pode ser desabilitado Definição Macro NDEBUG


Carregar ppt "Políticas Curso de aprofundamento em linguagem C."

Apresentações semelhantes


Anúncios Google