Code Complete
Um Guia Prático para a Construção de Software (2ª edição) · Steve McConnell
0/42tópicos concluídos
0/4provas aprovadas
0%progresso total
Como estudar
- Olhe a ilustração. Leia o resumo (máx. 5 linhas).
- Tente responder as perguntas-chave antes de abrir.
- Faça os 5 exercícios. Acertar 3 ou mais conclui o tópico.
- No fim, faça as provas (mínimo 70%).
- Tudo concluído: emita o certificado.
- 1Bem-vindo à construção de software
Construção = projeto detalhado + código + depuração + testes do desenvolvedor: o centro de todo projeto.novo - 2Metáforas para entender o desenvolvimento
Metáforas são heurísticas: a de construção civil explica bem o software; a de escrever uma carta, mal.novo - 3.1Pré-requisitos: meça duas vezes, corte uma
Defeito de requisito achado tarde custa 10 a 100 vezes mais: prepare antes de construir.novo - 3.2Requisitos e arquitetura
Requisitos dizem o que o sistema faz; arquitetura é o esqueleto que a construção vai seguir.novo - 4Decisões-chave de construção
Linguagem, convenções e práticas definidas antes de codar; programe para dentro da linguagem.novo
- 5.1Projeto: desafios e gestão da complexidade
O imperativo técnico número 1 do software: gerenciar a complexidade.novo - 5.2Heurísticas de projeto
Abstração, encapsulamento, esconder segredos, isolar o que muda e manter o acoplamento baixo.novo - 5.3Práticas de projeto
Itere, divida para conquistar, faça protótipos e pare quando os detalhes forem óbvios.novo - 6.1Classes: tipos abstratos e boas interfaces
Uma classe é um tipo abstrato de dados: interface coerente, implementação escondida.novo - 6.2Classes: herança, contenção e motivos para criar
Prefira "tem um" (contenção); herde só quando "é um" for verdade e respeite Liskov.novo - 7.1Rotinas: por que criar e coesão
Rotinas reduzem complexidade; a melhor faz uma coisa só (coesão funcional).novo - 7.2Rotinas: nomes, tamanho e parâmetros
Nome que descreve tudo, verbo forte + objeto, até ~7 parâmetros, ordem entrada-modifica-saída.novo - 8.1Programação defensiva: asserções e erros
Proteja-se de entradas inválidas; asserções para o impossível, tratamento de erro para o esperado.novo - 8.2Exceções, barricadas e código de depuração
Exceção só para o excepcional; barricada na fronteira; falhe alto em desenvolvimento.novo - 9Processo de Programação com Pseudocódigo
Projete a rotina em pseudocódigo, vire comentários, preencha o código, revise, limpe.novo
- 10Questões gerais sobre variáveis
Declare perto do uso, mantenha vivas pelo menor tempo e use cada variável para uma só coisa.novo - 11O poder dos nomes de variáveis
O nome deve dizer completa e exatamente o que a variável representa, no vocabulário do problema.novo - 12Tipos de dados fundamentais
Sem números mágicos, cuidado com divisão, overflow, comparação de floats e limites de arrays.novo - 13Tipos de dados incomuns
Estruturas agrupam, ponteiros exigem isolamento e dados globais só como último recurso.novo
- 14Organizando código em linha reta
Deixe as dependências de ordem óbvias e mantenha juntas as instruções relacionadas.novo - 15Usando condicionais
Caminho normal primeiro, igualdade bem conferida, else considerado e case ordenado.novo - 16Controlando laços
Uma entrada, uma função, saída óbvia, corpo visível de uma vez e no máximo 3 níveis.novo - 17Estruturas de controle incomuns
Retorno antecipado quando ajuda, recursão com parada garantida e goto quase nunca.novo - 18Métodos dirigidos por tabela
Troque lógica complicada por consulta a uma tabela: acesso direto, indexado ou em degraus.novo - 19Questões gerais de controle
Booleanos legíveis, aninhamento raso e complexidade ciclomática abaixo de 10.novo
- 20O panorama da qualidade de software
Nenhuma técnica sozinha acha a maioria dos defeitos; combine várias. Qualidade reduz custo.novo - 21Construção colaborativa
Pares, inspeções e leitura de código acham defeitos que os testes não acham, e mais barato.novo - 22.1Testes do desenvolvedor: papel e limites
Testar mostra a presença de erros, nunca a ausência; teste para quebrar, não para confirmar.novo - 22.2Técnicas e ferramentas de teste
Teste de base estruturada, fluxo de dados, partições, limites e adivinhação de erros.novo - 23Depuração
Método científico: estabilize, localize, corrija, teste a correção e procure erros parecidos.novo - 24Refatoração
Mudar a estrutura sem mudar o comportamento, em passos pequenos, com testes a cada passo.novo - 25Estratégias de ajuste de código
Desempenho começa no projeto; meça antes de otimizar, porque o gargalo quase nunca está onde você pensa.novo - 26Técnicas de ajuste de código
Lógica, laços, dados, expressões e rotinas: ajustes locais que precisam ser medidos um a um.novo
- 27Como o tamanho do programa afeta a construção
Mais gente = muito mais canais de comunicação, mais defeitos por linha e menos produtividade.novo - 28Gerenciando a construção
Incentive bom código, controle mudanças, estime com cuidado, meça e trate programadores como pessoas.novo - 29Integração
Integre aos poucos: erros fáceis de achar, progresso visível e build diário com teste de fumaça.novo - 30Ferramentas de programação
Boas ferramentas cortam trabalho repetitivo, mas não existe bala de prata: programar continua difícil.novo
- 31Layout e estilo
Teorema fundamental da formatação: o layout deve mostrar a estrutura lógica do programa.novo - 32Código autodocumentado
A melhor documentação é o próprio código; comente a intenção (por quê), não o óbvio (como).novo - 33Caráter pessoal
Humildade, curiosidade, honestidade intelectual e bons hábitos pesam mais que inteligência pura.novo - 34Temas do artesanato de software
Domine a complexidade, escreva para pessoas, programe no nível do problema e itere sempre.novo - 35Onde encontrar mais informação
Um plano de leitura em três níveis e o hábito de aprender continuamente.novo