Refactoring: Improving the Design of Existing Code
Unit Testing Principles Practices, and Patterns
- London School vs Classical School of Unit Testing
- The four pillars of a good unit test
- Protection against regressions
- Resistance to refactoring
- Fast feedback
- Maintainability
- Definition test double --> overarching therm
- Further divided into: mock, stub
Test Driven Development By Example
Domain Driven Design Tackling Complexity in the Heart of Software (Blue Book)
Domain-Driven Design Distilled
- Definition Architecture (Chapter 15)
- Goal of architecture: The goal of software architecture is to minimize the human resources required to build and maintain the required system.
- Programming paradigms (Structured, OO, Functional)
- all took something away not added something
- Design Principles - SOLID
- mid-level software structures (class - in oop, which is coupled grouping of functions and data (applies to non oop as well))
- Definition Module
- Definition Component
- Component Principles
- Component Cohesion
- REP (Reuse/Release Equivalence Principle)
- CCP (Common Closure Principle)
- CRP (Common Reuse Principle)
- Component Coupling
- ADP (Acyclic Dependencies Principle)
- SDP (Stable Dependencies Principle)
- SAP (Stable Abstractions Principle)
- Dependency Rule
- Humble Object Pattern
Agile Principles, Patterns, and Practices in C#
- Principles of Package and Component Design
- Very nice addition to Clean Architecture as it goes into more detail and also shows dependency metrics
Clean Craftsmanship Disciplines, Standards and Ethics
Code That Fits in Your Head Heuristics for Software Engineering
- Trivariate Analysis
- Agile Manifesto
- Small teams doing small things
- Agile Movement
- Software Craftsmanship Movement
https://enterprisecraftsmanship.com/online-training