|
The Humble Dialog Box
Michael Feathers
2002
|
 |
 |
 |
How do you create a dialog box test first and keep it focused on what it needs to do? This article shows an interesting technique.
|
 |
 |
|
Emergent Optimization in Test Driven Design
Michael Feathers
XP2002,
2001
|
 |
 |
 |
This paper by Michael Feathers was accepted at the XP2002 conference in Sardinia. It describes how test driven development can lead seamlessly to runtime optimization in some cases and readiness for optimization in others.
|
 |
 |
|
Singleton And Monostate
Robert C. Martin
A chapter from Principles, Patterns, and Practices of Agile Software Development, Robert C. Martin, Prentice Hall.,
2002
|
 |
 |
 |
This article compares and constrasts the Singleton and Monostate Design patterns. It also discusses their relative advantages and disadvantages, and gives advice on when and how to use them.
|
 |
 |
|
Proxy and Stairway to Heaven
Robert C. Martin
A chapter from Principles, Patterns, and Practices of Agile Software Development, Robert C. Martin, Prentice Hall.,
2002
|
 |
 |
 |
This article examines how to use the Proxy, Stairway to Heaven, and Facade patterns to access databases.
|
 |
 |
|
Evolution of an Inside-Outside Test
James W. Grenning
2002
|
 |
 |
 |
This article shows the evolution of a test. It shows how some tests can get started by having detailed internal knowledge of the implementation, but ends by refactoring the test to only know the interface to the class being tested.
|
 |
 |
|
Working Effectively with Legacy Code
Michael Feathers
objectmentor.com,
2002
|
 |
 |
 |
Most projects have a large amount of legacy code. Typically, it is awkward to deal with. This article contains concrete advice that you can use to prepare legacy code for refactoring or enhancement
|
 |
 |
|
The Visitor Family of Design Patterns
Robert C. Martin
This is a rough chapter from The Principles, Patterns, and Practices of Agile Software Development, Robert C. Martin, Prentice Hall ,
2002
|
 |
 |
 |
This article describes the Visitor pattern and several related patterns such as Decorator, Acyclic Visitor, and Extension Object. Several case studies are presented to show how these patterns work, and what purposes they serve.
|
 |
 |
|
Inheritance vs. Delegation
Robert C. Martin
This is a rough chapter from The Principles, Patterns, and Practices of Agile Software Development, Robert C. Martin, Prentice Hall ,
2002
|
 |
 |
 |
This article uses two design patterns, Template Method, and Strategy, to describe the tension between inheritance and delegation. It talks about the costs and benefits of both approaches, and tries to give the reader a better understanding of when to use each.
|
 |
 |
|
The Self-Shunt Unit Testing Pattern
Michael Feathers
objectmentor.com,
2001
|
 |
 |
 |
|
 |
 |
|
Principles and Patterns
Robert C. Martin
objectmentor.com,
2000
|
 |
 |
 |
"What goes wrong with software?" A brief explanation of the ten Principles of OOD with supporting patterns.
|
 |
 |
|
Walking through a UML Design
Robert C. Martin
,
James W. Newkirk
1998
|
 |
 |
 |
This article walks the reader through a fairly complex UML design. Many design principles and patterns are described.
|
 |
 |
|
Plop Plop, Fizz Fizz
Robert C. Martin
PLoP94,
1994
|
 |
 |
 |
Journal of Object Oriented Programming, late 1994. A Review of PLoP 94
|
 |
 |
|
PLoP94 Submission
Robert C. Martin
PLoP94,
1994
|
 |
 |
 |
Several Design Patterns, Iterable Container, Member Container, Three Level Finite State Machine, Abstract Client, Write a Loop Once. PLoP-94, Pattern Languages of Program Design I
|
 |
 |
|
The Liskov Substitution Principle
Robert C. Martin
C++ Report,
1996
|
 |
 |
 |
How do you know if you are using inheritance correctly? This article describes Barbara Liskov's famous Substitution Principles. It shows the principle in action through several demonstrations.
|
 |
 |
|
The Interface Segregation Principle
Robert C. Martin
C++ Report,
1996
|
 |
 |
 |
Fat class interfaces are all too common. This article describes a principle that helps designers partition fat classes into multiple interfaces.
|
 |
 |
|
Design Patterns for Dealing with Dual Inheritance Hierarchies in C++
Robert C. Martin
C++ Report,
1997
|
 |
 |
 |
Dual inheritance hierarchies are common in object oriented designs. Yet they can cause nasty downcasting problems. This article describes some design patterns that help.
|
 |
 |
|
The Dependency Inversion Principle
Robert C. Martin
C++ Report,
1996
|
 |
 |
 |
I first stumbled on this principle when Jim Newkirk and I were arranging the source code directories of a C++ project. We realized that we could make the directories that contained detailed code depend upon the directories that contained abstract classes. This seemed like an inversion to me, so I coined the name "Dependency Inversion".
|
 |
 |
|
Cross Casting: The Capsule Pattern
Robert C. Martin
C++ Report,
1997
|
 |
 |
 |
In 1996 and 1997 I was very interested in how to use dynamic_cast in C++. The notion of casting a pointer or reference to an object "up" or "down" was well known. But casting "across" the hierarchy was new to me.
|
 |
 |
|
Acyclic Visitor
Robert C. Martin
PLoP, PLoPD,
1996
|
 |
 |
 |
(Submission to PLoPD-96) A design pattern that makes use of dynamic_cast in order to eliminate dependency cycles in Visitors.
|
 |
 |
|
Private Interface
James W. Newkirk
objectmentor.com,
1997
|
 |
 |
 |
A design pattern for controlling visibility
|
 |
 |
|
Taskmaster: An Architecture Pattern for GUI Applications
Robert C. Martin
,
James W. Newkirk
,
Bhama Rao
C++ Report,
1997
|
 |
 |
 |
This is a description of an architecture pattern used on a major GUI development in C++.
|
 |
 |
|
Granularity
Robert C. Martin
C++ Report,
1996
|
 |
 |
 |
(An article about large scale OO structure) Discusses the Reuse/Release Equivalency Principle, The Common Closure Principle, The Common Reuse Principle, and the Acylclic Dependencies Principle.
|
 |
 |
|
Oh what a relief it is.
Robert C. Martin
C++ Report,
1996
|
 |
 |
 |
A review of PLoP95
|
 |
 |
|
The Open Closed Principle
Robert C. Martin
C++ Report,
1996
|
 |
 |
 |
Probably the most important of all the OOD principles. This article is an explanation and demonstration of Bertrand Meyer's famous principle.
|
 |
 |
|
Button Button, Whose got the Button?
Robert C. Martin
ROAD,
1995
|
 |
 |
 |
As an attempt to gain headway in our never ending arguments about OOD on comp.object, it was suggested that we try to design a simple application. We decided to design the software that read the status of a button and used it to turn on a light.
The debate raged for months.
|
 |
 |
|
Abstract Classes and Pure Virtual Functions
Robert C. Martin
,
C++ Report,
1992
|
 |
 |
 |
This is the first article I ever write for a professional journal. Stan Lippman was the editor of the C++ Report at the time. I nicknamed him Stan "The Merciless". His poigniant edits did me more good than could repay.
This article discusses why and when to use abstract classes. There are hints of the design principles to come.
|
 |
 |