Zusammenfassung der Ressource
Frage 1
Frage
Qual dos fatores externos esta ligado a Programação Defensiva?
Antworten
-
Corretude
-
Robustez
-
Verificabilidade
-
Segurança (Integridade)
Frage 2
Frage
Quais são os princípios de McConnel na Programação Defensiva?
Antworten
-
O usuário deverá ser treinado para entrar com dados certos no sistema.
-
O programa devera tratar todos os dados de entradas, de forma que, caso algo esteja errado, ele possa através de probabilidades, descobrir o dado que o usuário estava querendo digitar.
-
Entra dados incorretos (lixo), nada sai. OU Nenhum lixo pode entrar.
Frage 3
Frage
O que é tratamento de entradas inválidas na Programação Defensiva?
Antworten
-
Tratamento de entradas inválidas é criar uma barricada, ou seja, uma área segura do sistema com classes de validação, no qual será validada toda a informação, antes que a mesma entre para os módulos internos do sistema.
-
Verificar todo o tipo de entrada de fontes externas, seja de arquivo ou do próprio usuário e também do próprio sistema como parâmetros e chamadas de método. Caso detecte algum problema nos dados, fazer um tratamento adequado desses dados, de modo que o erro não interfira no funcionamento do sistema como um todo.
-
Parar o sistema e levantar um erro (exceção) com informações da linha do código onde ocorreu o erro.
-
Enviar erro fatal e fechar o sistema sempre que um dado invalido entrar no sistema.
Frage 4
Frage
Das alternativas abaixo, quais delas não é uma técnica de tratamento para entradas inválidas?
Antworten
-
Retornar um valor neutro (padrão) que não cause erros.
-
Substituir pelo próximo dado válido. (ex.: tocador de mp3 ou vídeo)
-
Valor válido mais próximo. (ex.: Acertar entrada de hora do tipo: 22:80:05)
-
Retornar a mesma resposta anterior. (ex. Digitar canal inexistente, retornar ao canal estável.)
-
Avaliar expressão, caso seja falsa, emitir umas mensagem de erro inesperado no código.
Frage 5
Frage
Marque a alternativa que exemplifique da melhor forma a Robustez x Corretude.
Antworten
-
Todo programa deve ser robusto a qualquer custo. Ou seja, funcionar de qualquer maneira em condições anormais.
-
Em um programa do tipo de editor de texto, não se deve priorizar a robustez, uma vez que o programa não é tão crítico a falhas. Já em um sistema do tipo de controladores de voo a robustez deve ser importante.
-
Depende do programa, nem sempre a robustez será importante, e nesses casos a corretude deve ser priorizada, como nos sistemas de Raio X. Porem há casos que a robustez deve ser priorizada, como em sistemas de stream de vídeo ou áudio, como também em sistema do tipo editores de texto.
-
Nenhuma das alternativas acima.
Frage 6
Frage
Marque as respostas corretas em relação as barricadas.
Antworten
-
É uma técnica de tratamento de entradas inválidas.
-
É uma área delimitada de segurança, no qual os dados são verificados e desinfectados ou bloqueados (quando não for possível a desinfecção), antes de entrar para as classes internas do sistema.
-
É uma técnica da programação defensiva que tem como estratégia o confinamento de dados.
-
As rotinas fora das barricadas devem usar tratamento de erros.
-
As classes de validação na barricada, levantam uma exceção quando um dado incorreta tentar passar.
-
Não se pode garantir a desinfecção total de dados em uma barricada.
Frage 7
Frage
A forma geral do código de exceção é:
try
{
}catch(Exceção)
{
}finally
{
}
Frage 8
Frage
Marque as alternativas que mostra as recomendações de McConnell em relação aos tratamentos de exceções.
Antworten
-
Use e abuse das exceções no seu projeto, além de torna o sistema mais robusto , ele facilita a compreensão do código.
-
Evite lançar exceções em construtores e destrutores.
-
Crie mensagens claras de exceção, que informa a causa do problema.
-
Padronize exceções com tipos, classes de controle e etc.
-
Evite exceções em casos excepcionais.
-
Use o nível correto de abstração. Evite passar exceções de baixo nível em classes de alto nível.
Frage 9
Frage
O que este código faz?
static public double dividir(double y, double x)
{
if (x == 0)
throw new System.DivideByZeroException();
return(y/x);
}
Antworten
-
Um método que recebe duas variáveis double y e x, e retorna o resultado da divisão.
-
Um método que verifica se x é 0, se for positivo lança uma exceção de divisão por zero.
-
Um método que recebe duas variáveis double y e x, verifica se x é igual a zero, se for positivo lança uma exceção de divisão por zero, caso contrario, retorna a Divisão de y por x.
Frage 10
Frage
Marque a alternativa correta sobre asserções.
Antworten
-
Trata um erro de entrada, tentando corrigir esse erro na barricada, para então seguir para as classes internas do sistema.
-
Permite ao programa realizar uma avaliação booleana , caso essa avaliação dê falso, gera um erro espalhafatoso no sistema em modo debug, interrompe a execução do mesmo e exibe uma mensagem de erro para o programador. Em algumas linguagens essa mensagem podem ser personalizadas.
-
É usado para erros esperados no sistema.
-
Muito usados em programa de que pequeno porte, avisa aos programadores de erros que não deveriam acontecer no sistema.
-
Permite ao programa realizar uma avaliação booleana , caso essa avaliação dê verdadeiro, gera um erro espalhafatoso no sistema em modo release, interrompe a execução do mesmo e exibe uma mensagem de erro para o programador. Em algumas linguagens essa mensagem podem ser personalizadas.