How to Write Code You're Proud of . . . Every Single Day
". . . [A] timely and humble reminder of the ever-increasing complexity of our programmatic world and how we owe it to the legacy of humankind--and to ourselves--to practice ethical development. Take your time reading Clean Craftsmanship. . . . Keep this book on your go-to bookshelf. Let this book be your old friend--your Uncle Bob, your guide--as you make your way through this world with curiosity and courage."
--From the Foreword by Stacia Heimgartner Viscardi, CST & Agile Mentor
In Clean Craftsmanship, the legendary Robert C. Martin ("Uncle Bob") has written the principles that define the profession--and the craft--of software development. Uncle Bob brings together the disciplines, standards, and ethics you need to deliver robust, effective code and to be proud of all the software you write.
Robert Martin, the best-selling author of Clean Code, provides a pragmatic, technical, and prescriptive guide to the foundational disciplines of software craftsmanship. He discusses standards, showing how the world's expectations of developers often differ from their own and helping you bring the two in sync. Bob concludes with the ethics of the programming profession, describing the fundamental promises all developers should make to their colleagues, their users, and, above all, themselves.
With Uncle Bob's insights, all programmers and their managers can consistently deliver code that builds trust instead of undermining it--trust among users and throughout societies that depend on software for their survival.
• Moving towards the "north star" of true software craftsmanship: the state of knowing how to program well
• Practical, specific guidance for applying five core disciplines: test-driven development, refactoring, simple design,
• collaborative programming, and acceptance tests
• How developers and teams can promote productivity, quality, and courage
• The true meaning of integrity and teamwork among programmers, and ten specific commitments every software professional should make
Author(s): Robert C. Martin
Series: Robert C. Martin Series
Edition: 1
Publisher: Addison-Wesley Professional
Year: 2021
Language: English
Commentary: Publisher's PDF
Pages: 416
City: Boston, MA
Tags: Software Engineering; Quality Control; Ethics; Best Practices; Design; Refactoring; Productivity; Career; Teamwork; Acceptance Testing; Personal Growth; Test-Driven Development; eXtreme Programming; YAGNI; Collaborative Programming
Cover
Half Title
Title Page
Copyright Page
Dedication
Table of Contents
Foreword
Preface
Acknowledgments
About the Author
Chapter 1 Craftsmanship
PART I: The Disciplines
Chapter 2 Test-Driven Development
Overview
Software
The Three Laws of TDD
The Fourth Law
The Basics
Simple Examples
Stack
Prime Factors
The Bowling Game
Conclusion
Chapter 3 Advanced TDD
Sort 1
Sort 2
Getting Stuck
Arrange, Act, Assert
Enter BDD
Finite State Machines
BDD Again
Test Doubles
Dummy
Stub
Spy
Mock
Fake
The TDD Uncertainty Principle
London versus Chicago
The Certainty Problem
London
Chicago
Synthesis
Architecture
Conclusion
Chapter 4 Test Design
Testing Databases
Testing GUIs
GUI Input
Test Patterns
Test-Specific Subclass
Self-Shunt
Humble Object
Test Design
The Fragile Test Problem
The One-to-One Correspondence
Breaking the Correspondence
The Video Store
Specificity versus Generality
Transformation Priority Premise
{} → Nil
Nil → Constant
Unconditional → Selection
Value → List
Statement → Recursion
Selection → Iteration
Value → Mutated Value
Example: Fibonacci
The Transformation Priority Premise
Conclusion
Chapter 5 Refactoring
What Is Refactoring?
The Basic Toolkit
Rename
Extract Method
Extract Variable
Extract Field
Rubik’s Cube
The Disciplines
Tests
Quick Tests
Break Deep One-to-One Correspondences
Refactor Continuously
Refactor Mercilessly
Keep the Tests Passing!
Leave Yourself an Out
Conclusion
Chapter 6 Simple Design
YAGNI
Covered by Tests
Coverage
An Asymptotic Goal
Design?
But There’s More
Maximize Expression
The Underlying Abstraction
Tests: The Other Half of the Problem
Minimize Duplication
Accidental Duplication
Minimize Size
Simple Design
Chapter 7 Collaborative Programming
Chapter 8 Acceptance Tests
The Discipline
The Continuous Build
Extreme Programming
The Circle of Life
Test-Driven Development
Refactoring
Simple Design
Collaborative Programming
Acceptance Tests
PART II: The Standards
Your New CTO
Chapter 9 Productivity
We Will Never Ship S**T
Inexpensive Adaptability
We Will Always Be Ready
Stable Productivity
Chapter 10 Quality
Continuous Improvement
Fearless Competence
Extreme Quality
We Will Not Dump on QA
The QA Disease
QA Will Find Nothing
Test Automation
Automated Testing and User Interfaces
Testing the User Interface
Chapter 11 Courage
We Cover for Each Other
Honest Estimates
You Must Say NO
Continuous Aggressive Learning
Mentoring
PART III: The Ethics
The First Programmer
Seventy-Five Years
Nerds and Saviors
Role Models and Villains
We Rule the World
Catastrophes
The Oath
Chapter 12 Harm
First, Do No Harm
No Harm to Society
Harm to Function
No Harm to Structure
Soft
Tests
Best Work
Making It Right
What Is Good Structure?
Eisenhower’s Matrix
Programmers Are Stakeholders
Your Best
Repeatable Proof
Dijkstra
Proving Correctness
Structured Programming
Functional Decomposition
Test-Driven Development
Chapter 13 Integrity
Small Cycles
The History of Source Code Control
Git
Short Cycles
Continuous Integration
Branches versus Toggles
Continuous Deployment
Continuous Build
Relentless Improvement
Test Coverage
Mutation Testing
Semantic Stability
Cleaning
Creations
Maintain High Productivity
Viscosity
Managing Distractions
Time Management
Chapter 14 Teamwork
Work as a Team
Open/Virtual Office
Estimate Honestly and Fairly
Lies
Honesty, Accuracy, Precision
Story 1: Vectors
Story 2: pCCU
The Lesson
Accuracy
Precision
Aggregation
Honesty
Respect
Never Stop Learning
Index
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z