Design maxims

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m (Formatting bullets etc)
Line 60: Line 60:
  
 
'''Clumps of maxims'''
 
'''Clumps of maxims'''
* JohnsonAndFootesHeuristics:
+
* [[Johnson and Foote's heuristics]]:
  * RecursionIntroduction.
+
** Recursion introduction.
  * EliminateCaseAnalysis.
+
** Eliminate case analysis.
  * ReduceTheNumberOfArguments.
+
** Reduce the number of arguments.
  * ReduceTheSizeOfMethods.
+
** Reduce the size of methods.
  * ClassHierarchiesShouldBeDeepAndNarrow.
+
** ClassHierarchiesShouldBeDeepAndNarrow.
  * TheTopOfTheClassHierarchyShouldBeAbstract.
+
** TheTopOfTheClassHierarchyShouldBeAbstract.
  * MinimizeAccessesToVariables.
+
** MinimizeAccessesToVariables.
  * SubclassesShouldBeSpecializations.
+
** SubclassesShouldBeSpecializations.
  * SplitLargeClasses.
+
** SplitLargeClasses.
  * FactorImplementationDifferencesIntoSubcomponents.
+
** FactorImplementationDifferencesIntoSubcomponents.
  * SeparateMethodsThatDoNotCommunicate.
+
** SeparateMethodsThatDoNotCommunicate.
  * SendMessagesToComponentsInsteadOfToSelf.
+
** SendMessagesToComponentsInsteadOfToSelf.
  * ReduceImplicitParameterPassing
+
** ReduceImplicitParameterPassing
* RielsHeuristics:
+
* RielsHeuristics:
* BobMartinsPrinciples:
+
* BobMartinsPrinciples:
  * (SRP) The SingleResponsibilityPrinciple
+
** (SRP) The SingleResponsibilityPrinciple
  * (OCP) The OpenClosedPrinciple
+
** (OCP) The OpenClosedPrinciple
  * (LSP) The LiskovSubstitutionPrinciple
+
** (LSP) The LiskovSubstitutionPrinciple
  * (DIP) The DependencyInversionPrinciple
+
** (DIP) The DependencyInversionPrinciple
  * (ISP) The InterfaceSegregationPrinciple
+
** (ISP) The InterfaceSegregationPrinciple
  * (REP) The ReuseReleaseEquivalencePrinciple
+
** (REP) The ReuseReleaseEquivalencePrinciple
  * (CCP) The CommonClosurePrinciple
+
** (CCP) The CommonClosurePrinciple
  * (CRP) The CommonReusePrinciple
+
** (CRP) The CommonReusePrinciple
  * (ADP) The AcyclicDependenciesPrinciple
+
** (ADP) The AcyclicDependenciesPrinciple
  * (SDP) The StableDependenciesPrinciple
+
** (SDP) The StableDependenciesPrinciple
  * (SAP) The StableAbstractionsPrinciple
+
** (SAP) The StableAbstractionsPrinciple
* KenAuer1995:
+
* KenAuer1995:
  * DefineClassesByBehaviorNotStatePattern.  
+
** DefineClassesByBehaviorNotStatePattern.  
  * ImplementBehaviorWithAbstractStatePattern.  
+
** ImplementBehaviorWithAbstractStatePattern.  
  * IdentifyMessageLayersPattern.  
+
** IdentifyMessageLayersPattern.  
  * DeferIdentificationOfStateVariablesPattern.  
+
** DeferIdentificationOfStateVariablesPattern.  
  * EncapsulateConcreteStatePattern.  
+
** EncapsulateConcreteStatePattern.  
  * UseLazyInitializationPattern.  
+
** UseLazyInitializationPattern.  
  * DefineDefaultValuesViaExplicitProtocolPattern.
+
** DefineDefaultValuesViaExplicitProtocolPattern.
* AlanDavis1995:
+
* AlanDavis1995:
* CodeSmells
+
* [[Code smells]]

Revision as of 02:05, 27 July 2008

Object oriented design maxims

maxim:: (noun) A general truth or rule of conduct expressed in a sentence.

Lets use the term maxim to mean all the rules, laws, guidelines, principles, heuristics, strategies, patterns and idioms that are named by a standard phrase.

Maxims

Clumps of maxims

  • Johnson and Foote's heuristics:
    • Recursion introduction.
    • Eliminate case analysis.
    • Reduce the number of arguments.
    • Reduce the size of methods.
    • ClassHierarchiesShouldBeDeepAndNarrow.
    • TheTopOfTheClassHierarchyShouldBeAbstract.
    • MinimizeAccessesToVariables.
    • SubclassesShouldBeSpecializations.
    • SplitLargeClasses.
    • FactorImplementationDifferencesIntoSubcomponents.
    • SeparateMethodsThatDoNotCommunicate.
    • SendMessagesToComponentsInsteadOfToSelf.
    • ReduceImplicitParameterPassing
  • RielsHeuristics:
  • BobMartinsPrinciples:
    • (SRP) The SingleResponsibilityPrinciple
    • (OCP) The OpenClosedPrinciple
    • (LSP) The LiskovSubstitutionPrinciple
    • (DIP) The DependencyInversionPrinciple
    • (ISP) The InterfaceSegregationPrinciple
    • (REP) The ReuseReleaseEquivalencePrinciple
    • (CCP) The CommonClosurePrinciple
    • (CRP) The CommonReusePrinciple
    • (ADP) The AcyclicDependenciesPrinciple
    • (SDP) The StableDependenciesPrinciple
    • (SAP) The StableAbstractionsPrinciple
  • KenAuer1995:
    • DefineClassesByBehaviorNotStatePattern.
    • ImplementBehaviorWithAbstractStatePattern.
    • IdentifyMessageLayersPattern.
    • DeferIdentificationOfStateVariablesPattern.
    • EncapsulateConcreteStatePattern.
    • UseLazyInitializationPattern.
    • DefineDefaultValuesViaExplicitProtocolPattern.
  • AlanDavis1995:
  • Code smells
Personal tools