13. Tipos de dados incomuns
Estruturas agrupam, ponteiros exigem isolamento e dados globais só como último recurso.
Resumo
- Estruturas: deixam relações claras, simplificam operações em bloco e listas de parâmetros.
- Ponteiros: isole em rotinas/classes; cheque antes de usar; zere após liberar; prefira smart pointers.
- Problemas de globais: mudança inadvertida, aliasing, reentrância, reuso difícil, ordem de inicialização.
- Usos aceitáveis: valores realmente globais, emular constantes/enums, dados muito comuns, eliminar dado vagabundo.
- Comece local; se precisar de global, use rotinas de acesso (controle, abstração, ponto único).
Perguntas-chave
responda de cabeça, depois abraO que é 'dado vagabundo' (tramp data)?
Dado passado por várias rotinas que não o usam, só para chegar a uma que usa. Globais ou classes podem eliminá-lo.
Por que rotinas de acesso são melhores que global direto?
Centralizam o controle, permitem validar, trocar a implementação e expressar o acesso em nível de abstração mais alto.
Como reduzir erros com ponteiros?
Isolar operações em rotinas, checar ponteiro antes de usar, usar campos de verificação (dog tags), anular após liberar, usar ponteiros inteligentes.
Exercícios de fixação
0/5 respondidas1.
Uma variável global
saldoAtual é alterada por 25 rotinas e há um bug de valor errado. Qual problema de globais isso ilustra?2.
Qual alternativa o livro recomenda para acessar um dado que precisa ser global?
3.
Um parâmetro passa por 5 rotinas que não o usam até chegar à única que usa. Isso é:
4.
Depois de liberar a memória de um ponteiro em C++, o livro recomenda:
5.
Quando um dado pode precisar ser compartilhado, o livro sugere começar: