What Isa Factor

Short Definition

A factor is an aspect of a program that can be thought about relatively independently of the rest of the program.

Relation between Factors and Patterns

When you ReFactor a program you are explicitly or implicitly FactorFinding. The improvement in design comes about because the modified design now explicitly recognizes an independent aspect that was buried unrecognized within a monolithic block. You're also now better able to vary that aspect. Some factors may correspond directly to DesignPatterns, RefactoringPatterns or to OptimizationPatterns, but they don't have to.

When a DesignPattern is really earning its keep we have:

When we're refactoring or optimizing we may have to make do with:

How Useful?

It isn't that useful to have wiki pages for Factors that correspond to the underlying objects of individual DesignPatterns. Evidence: We very rarely have Wiki Pages for Objects.

It could be argued and look someone just has that it is useful to have Wiki pages for the Factors that relate to RefactoringPatterns and to OptimizationPatterns. In these cases the underlying Factors may make it easier to clarify the patterns and their applicability.

I will argue that it is useful to have Wiki pages for the Factors that don't yet show up as DesignPatterns, RefactoringPatterns or OptimizationPatterns. The Factors are a hint to us that there is a useful pattern to be described, and a hint to language designers to boot.


Trouble with the Definition

If you've read RichardDawkins trying to define what a 'gene' is in TheSelfishGene, you'll know something of what the problem is in defining what a 'Factor' in a program is. Something is more or less a Factor to the extent that it is more or less independent of the rest of the program, but 'relatively independent' is hard to define with more precision.


CategoryRefactoring CategoryDefinition

EditText of this page (last edited August 14, 2010) or FindPage with title or text search