Estudos gratuitos da ER Soluções WebVer outros conteúdos grátis
ER Soluções WebEstudos · Code Complete

Prova 1 · Bases e projeto de código

Partes I e II (cap. 1–9): construção, metáforas, pré-requisitos, decisões-chave, projeto, classes, rotinas, programação defensiva, PPP

Objetivas

0/20 respondidas
1.
Um gerente quer cortar a fase de requisitos para "ganhar tempo" e começar a codificar já. Qual argumento do livro é mais forte contra isso?
2.
Uma equipe faz um app interno de reservas de sala, com usuários ainda descobrindo o que querem. Qual abordagem de pré-requisitos combina?
3.
Qual metáfora o livro considera mais útil para explicar planejamento, porte e custo de mudanças tardias?
4.
A linguagem do projeto não tem asserções. O que "programar para dentro da linguagem" sugere?
5.
Um módulo de relatórios depende de que o módulo de vendas chame carregar() antes de totalizar(), sem que nada na interface indique isso. O problema é:
6.
Qual decisão melhor aplica a heurística "isole áreas que tendem a mudar"?
7.
Por que o projeto de software é chamado de "problema perverso"?
8.
A classe Pilha expõe push, pop e também getArrayInterno(). Qual princípio foi violado?
9.
Pinguim herda de Ave, que tem voar(). Em Pinguim, voar() lança erro. O que o livro diria?
10.
Uma classe tem 23 campos de dados. O livro sugere:
11.
executar(int modo) imprime se modo == 1, salva se modo == 2 e envia se modo == 3. Qual coesão e o que fazer?
12.
Qual assinatura segue as recomendações de parâmetros do capítulo 7?
13.
Uma rotina chamada tratarDados() lê o arquivo, valida, grava no banco e envia e-mail. O problema mais evidente é:
14.
Qual situação pede asserção, e não tratamento de erro?
15.
Um app de música recebe uma tag de álbum corrompida. O comportamento mais adequado é:
16.
Num sistema com barricada, as classes da fronteira validam todos os dados externos. Dentro da barricada, os dados inválidos devem ser tratados com:
17.
Conta.getSaldo() lança FileNotFoundException. Qual orientação sobre exceções foi violada?
18.
No PPP, qual é o momento certo para compilar a rotina?
19.
Qual linha de pseudocódigo está no nível adequado de intenção?
20.
Qual característica de projeto o livro aponta como desejável?

Dissertativas

autoavaliação · não entram na nota
D1.
Explique por que McConnell chama a gestão da complexidade de "imperativo técnico principal" e cite três heurísticas de projeto que servem a ele.
Ver resposta modelo
Ninguém consegue manter um sistema moderno inteiro na cabeça; reduzir o que cada pessoa precisa considerar por vez é o objetivo de todas as técnicas. Heurísticas: abstração consistente (pensar em conceitos, não em detalhes), esconder informação (cada classe guarda um segredo), isolar áreas que mudam (regras de negócio, hardware), acoplamento fraco (pequeno, visível, flexível) e coesão alta.
D2.
Compare asserções e tratamento de erros, e explique como a barricada organiza o uso de cada um. Inclua a diferença entre correção e robustez.
Ver resposta modelo
Asserções verificam condições que nunca deveriam ocorrer (bugs) e costumam ser desligadas em produção; tratamento de erro lida com situações previstas, como entrada inválida. Na barricada, as classes da fronteira validam e limpam dados externos (tratamento de erro); dentro, assume-se dado limpo e usam-se asserções. Correção prefere não dar resultado a dar errado (sistemas críticos); robustez prefere continuar funcionando (apps de consumo).
D3.
Descreva o Processo de Programação com Pseudocódigo e explique por que ele reduz erros e tempo de comentários.
Ver resposta modelo
Etapas: projetar a rotina (pré-requisitos, problema, nome, testes, bibliotecas, erros, pseudocódigo no nível da intenção), codificar (declaração, pseudocódigo vira comentários, código abaixo de cada um), verificar (revisão mental, compilar quando confiante, depurador, testes) e limpar. Pensar antes de codar evita tentativa e erro; o pseudocódigo já vira os comentários de alto nível, então comentar quase não custa.
Seu progresso fica salvo neste navegador.