
Length15h 32m
About this audiobook
Do meu ponto de vista, um bom design de software é a essência de todo projeto de software bem-sucedido. Ainda assim, apesar de seu papel fundamental, há tão pouca literatura sobre o assunto e muito poucos conselhos sobre o que fazer e como fazer as coisas corretamente. Por quê? Bem, porque é difícil. Muito difícil. Provavelmente a faceta mais difícil de escrever software que temos que enfrentar. E isso porque não existe uma única solução "certa", nenhum conselho "de ouro" para passar pelas gerações de desenvolvedores de software. Sempre depende. Apesar dessa limitação, darei conselhos sobre como projetar um software bom e de alta qualidade. Fornecerei princípios de design, diretrizes de design e padrões de design que ajudarão você a entender melhor como gerenciar dependências e transformar seu software em algo com o qual você possa trabalhar por décadas. Como afirmado anteriormente, não há conselho "de ouro", e este livro não contém nenhuma solução definitiva ou perfeita. Em vez disso, tento mostrar os aspectos mais fundamentais de um bom software, os detalhes mais importantes, a diversidade e os prós e contras de diferentes designs. Também formularei objetivos de design intrínsecos e demonstrarei como atingir esses objetivos com o C++ moderno.
Audiobook details
GenreTechnology
Length15 hrs 32 mins
Narrated byListen with 1,000+ voices
FormateBook with Audio
Publish dateSep 29, 2022
LanguagePortuguese
Table of contents
1Projeto de software C++
2Prefácio
3Por que escrevi este livro
4Sobre o que é este livro
5Design de software
Show all chaptersShow less
6C++ moderno
7Padrões de design
8Para quem é este livro
9Como este livro está estruturado
10Convenções utilizadas neste livro
11Usando exemplos de código
12Capítulo 1. A Arte do Design de Software
13Diretriz 1: Entenda a importância do design de software
14Recursos não são design de software
15Design de software: a arte de gerenciar dependências e abstrações
16Os três níveis de desenvolvimento de software
17O foco nos recursos
18O foco no design de software e princípios de design
19Diretriz 2: Design para Mudança
20Separação de preocupações
21Um exemplo de acoplamento artificial
22Acoplamento Lógico versus Acoplamento Físico
23Não se repita
24Evite a separação prematura de preocupações
25Diretriz 3: Interfaces separadas para evitar acoplamento artificial
26Segregar Interfaces para Separar Preocupações
27Minimizando requisitos de argumentos de modelo
28Diretriz 4: Design para Testabilidade
29Como testar uma função de membro privado
30A verdadeira solução: preocupações separadas
31Diretriz 5: Design para Extensão
32O Princípio Aberto-Fechado
33Extensibilidade em tempo de compilação
34Evite Projetos Prematuros para Extensão
35Capítulo 2. A Arte de Construir Abstrações
36Diretriz 6: Aderir ao comportamento esperado das abstrações
37Um exemplo de violação de expectativas
38O Princípio da Substituição de Liskov
39Crítica ao Princípio da Substituição de Liskov
40A necessidade de abstrações boas e significativas
41Diretriz 7: Compreenda as semelhanças entre classes e conceitos básicos
42Diretriz 8: Entenda os Requisitos Semânticos dos Conjuntos de Sobrecarga
43O poder das funções livres: um mecanismo de abstração em tempo de compilação
44O Problema das Funções Livres: Expectativas sobre o Comportamento
45Diretriz 9: Preste Atenção à Propriedade das Abstrações
46O Princípio da Inversão de Dependência
47Inversão de dependência em uma arquitetura de plug-in
48Inversão de dependência por meio de modelos
49Inversão de dependência por meio de conjuntos de sobrecarga
50Princípio de Inversão de Dependência versus Princípio de Responsabilidade Única