 |
Designing Software |
January 2015 |
 |
 |
Strategic Design vs. Tactical Design |
January 2015 |
 |
 |
Design Constructs: Part I |
January 2015 |
 |
 |
Design Constructs: Part II |
January 2015 |
 |
 |
Thinking about Abstraction |
January 2015 |
 |
 |
Effective Encapsulation: Part I |
January 2015 |
 |
 |
Effective Encapsulation: Part II |
January 2015 |
 |
 |
Pleasures and Perils of Inheritance |
January 2015 |
 |
 |
Flavors of Polymorphism |
January 2015 |
 |
 |
Design by Contract vs Design by Capability |
February 2015 |
 |
 |
Modeling Classes |
February 2015 |
|
 |
Modeling Relationships |
February 2015 |
 |
 |
Modeling Inheritance |
February 2015 |
|
 |
Influences of TDD on Agility and Sustainability |
February 2015 |
 |
 |
Test Driven Development |
February 2015 |
 |
 |
Regression Benefits of TDD |
February 2015 |
|
 |
Design Benefits of TDD: Part I |
February 2015 |
 |
 |
Design Benefits of TDD: Part II |
February 2015 |
 |
 |
Design Benefits of TDD: Part III |
February 2015 |
 |
 |
Testing with Dependencies: Part I |
February 2015 |
|
 |
Testing with Dependencies: Part II |
February 2015 |
|
 |
Testing with Dependencies: Part III |
February 2015 |
|
 |
Testing with Dependencies: Part IV |
February 2015 |
|
 |
Why Care about Code Quality? |
May 2014 |
|
 |
Caring about Code Quality—Responsibility |
May 2014 |
|
 |
Ways to Improve Code Quality |
May 2014 |
 |
 |
Code Quality: Individual Efforts |
May 2014 |
 |
 |
Code Quality: Code Coverage |
June 2014 |
 |
 |
Code Quality: Team Efforts |
June 2014 |
 |
 |
Code Quality: Code Reviews |
June 2014 |
 |
 |
Code Quality: Broken Windows |
June 2014 |
|
 |
I Invite You to Break My Build |
July 2014 |
 |
 |
Treat Warnings as Error |
July 2014 |
|
 |
Expire Workarounds |
July 2014 |
 |
 |
Code Smell |
July 2014 |
 |
 |
Comments on Comments |
July 2014 |
 |
 |
Self Documenting Code: Part I |
August 2014 |
|
 |
Self Documenting Code: Part II |
August 2014 |
|
 |
Self Documenting Code: Part III |
August 2014 |
|
 |
Learning from Writing Well |
August 2014 |
|
 |
Creating Evolutionary Design and Architecture: Part I |
February 2015 |
|
 |
Creating Evolutionary Design and Architecture: Part II |
February 2015 |
|
 |
Creating Evolutionary Design and Architecture: Part III |
February 2015 |
|
 |
Creating Evolutionary Design and Architecture: Part IV |
February 2015 |
|
 |
Design Principles: Part I |
March 2015 |
 |
 |
Design Principles: Part II |
March 2015 |
|
 |
Design Principles: Part III |
March 2015 |
|
 |
Design Principles: Part IV |
March 2015 |
 |
 |
Design Principles: Part V |
March 2015 |
 |
 |
Design Principles: Part VI |
March 2015 |
|
 |
Design Principles: Part VII |
March 2015 |
|
 |
Design Principles: Part VIII |
March 2015 |
 |
 |
Design Principles: Part IX |
March 2015 |
|
 |
Design Principles: Part X |
April 2015 |
|
 |
Design Principles: Part XI |
April 2015 |
 |
 |
Design Principles: Part XII |
April 2015 |
|
 |
Design Principles: Part XIII |
April 2015 |
 |
 |
Design Patterns |
April 2015 |
 |
 |
Compose Method Pattern |
April 2015 |
 |
 |
Cascade Method Pattern |
April 2015 |
 |
 |
Abstract Factory |
April 2015 |
 |
 |
Factory Method |
April 2015 |
 |
 |
Prototype Pattern |
April 2015 |
|
 |
Singleton Pattern: Part I |
April 2015 |
 |
 |
Singleton Pattern: Part II |
May 2015 |
 |
 |
Builder Pattern |
May 2015 |
 |
 |
Adapter: Part I |
May 2015 |
 |
 |
Adapter: Part II |
May 2015 |
|
 |
Façade Pattern |
May 2015 |
 |
 |
Proxy Pattern |
May 2015 |
 |
 |
Bridge Pattern |
May 2015 |
 |
 |
Composite Pattern |
May 2015 |
|
 |
Decorator Pattern |
June 2015 |
 |
 |
Decorator Using Lambdas |
June 2015 |
 |
 |
Chain of Responsibility |
June 2015 |
|
 |
Iterator Pattern |
June 2015 |
|
 |
Internal vs External Iterators |
October 2013 |
 |
 |
Mediator Pattern |
June 2015 |
|
 |
Observer Pattern |
June 2015 |
 |
 |
Garbage Collection—Automatic, not Instantaneous |
October 2013 |
|
 |
Cleaning up External Resources |
October 2013 |
|
 |
Automatic Resource Management |
October 2013 |
 |
 |
Execute Around Method Pattern—Part I |
October 2013 |
|
 |
Execute Around Method Pattern—Part II |
October 2013 |
 |