About The Author
- Other Leanpub Books by Jason Roberts
- Keeping Software Soft
- C# Tips
- Pluralsight Courses
About this Book
Introduction
- What is Clean C#?
- Why Clean C#?
- Using this Book
- Code Samples
- Order
- Prescriptive
- Clean C# is a Spectrum
Comments
- Repeating What the Code Already Says
- Change Control Comments
- Comments as a Substitute for Self Documenting Code
- Commented-Out Code
- Pointless XML Documentation Comments
- Acceptable Use of Comments
Naming Things
- Qualities of Clean Names
- Expressive
- Accurate
- Suitable Length
- Pronounceable Names
- Naming Specific Items
- Namespaces
- Interfaces
- Classes
- Methods
- Properties
- Events
- Fields
- Attributes
- Method Parameters
- Variables
- Booleans
- Generic Types Parameters
- Enums
- Some General Rules
Methods
- Method Size and Clarity
- Cohesive Methods
- Mixing Abstraction Levels
- Action or Answering Methods
- Method Parameters
- Methods with Zero Parameters
- Methods with One Parameter
- Methods with Two Parameters
- Methods with Three Parameters
- Methods with More Than Three Parameters
- Refactoring to Reduce the Number of Parameters
- Params
- Output Parameters
- Named Arguments
- Boolean Switching Arguments
- Multiple Returns
- Code Duplication in Methods
- Methods with Side Effects
Structuring Programs for Readability
- Levels of Abstraction
- Method Level Abstractions
Errors and Exceptions
- Returning Error Codes
- Using Exceptions
- Supplied Framework Exceptions
- Defining Custom Exceptions
- Alternatives to Error Codes, Exceptions, and Returning Nulls
- Try Methods
- Special Case Design Pattern
Visual Formatting
- The Principle of Proximity
- The Principal of Similarity
- The Principal of Uniform Connectedness
- The Principal of Symmetry
Cohesion and Coupling
- Cohesion
- Coupling
Clean Tests
- Qualities of Good Test
- Execution Speed
- Independent and Isolated
- Repeatable and Reliable
- Valuable
- Resilient to Production Code Changes
- The Three Logical Phases of Tests
- The Arrange Phase
- The Act Phase
- The Assert Phase
- How Many Asserts?
- Simplifying Arrange Phase code with AutoFixture
Building On Clean Code
- The Single Responsibility Principle (SRP)
- The Open Closed Principle (OCP)
- The Liskov Substitution Principle (LSP)
- The Interface Segregation Principle (ISP)
- Keep It Simple Stupid (KISS)
- Don’t Repeat Yourself (DRY)
- You Aren’t Gonna Need It (YAGNI)