Clean Craftsmanship: Disciplines, Standards, and Ethics

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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
Register your book for convenient access to the book's companion videos, updates, and/or corrections as they become available. See inside book for details.

Author(s): Robert C. Martin
Series: Robert C. Martin Series
Edition: 1
Publisher: Addison-Wesley Professional
Year: 2021

Language: English
Pages: 416
Tags: Software Engineering; Test-Driven Development; Advanced TDD; Test Design; Refactoring

Foreword

Preface

Acknowledgments

About the Author

Chapter 1 Craftsmanship

PART I The Disciplines

Extreme Programming

The Circle of Life

Test-Driven Development

Refactoring

Simple Design

Collaborative Programming

Acceptance Tests

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

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