Design maxims

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m (removing spaces in the list)
Line 11: Line 11:
 
* AvoidEquals
 
* AvoidEquals
 
* AvoidInheritanceForImplementation
 
* AvoidInheritanceForImplementation
* AvoidSideEffects
+
* AvoidSideEffects
* BehavioralCompleteness
+
* BehavioralCompleteness
* BigDesignUpFront
+
* BigDesignUpFront
* CommandQuerySeparation
+
* CommandQuerySeparation
* CommonClosurePrinciple
+
* CommonClosurePrinciple
* CommonReusePrinciple
+
* CommonReusePrinciple
* CouplingAndCohesion
+
* CouplingAndCohesion
* DependencyInversionPrinciple
+
* DependencyInversionPrinciple
* DesignByContract
+
* DesignByContract
* DontBurnYourBaseClass
+
* DontBurnYourBaseClass
* DontExposeMutableAttributes
+
* DontExposeMutableAttributes
* DontRepeatYourself
+
* DontRepeatYourself
* DoTheSimplestThingThatCouldPossiblyWork
+
* DoTheSimplestThingThatCouldPossiblyWork
* EncapsulateThatWhichVaries
+
* EncapsulateThatWhichVaries
* EncapsulationIsHierarchical
+
* EncapsulationIsHierarchical
* FatInterfaces
+
* FatInterfaces
* FavorCompositionOverInheritance
+
* FavorCompositionOverInheritance
* GettersAndSetters
+
* GettersAndSetters
* GotoConsideredHarmful
+
* GotoConsideredHarmful
* HideYourDecisions
+
* HideYourDecisions
* ImpedanceMismatch
+
* ImpedanceMismatch
* InformationHiding
+
* InformationHiding
* InterfaceSegregationPrinciple
+
* InterfaceSegregationPrinciple
* KeepAccessorsAndMutatorsSeparate
+
* KeepAccessorsAndMutatorsSeparate
* KeepItSimple
+
* KeepItSimple
* LawOfDemeter
+
* LawOfDemeter
* LiskovSubstitutionPrinciple
+
* LiskovSubstitutionPrinciple
* ModelTheRealWorld
+
* ModelTheRealWorld
* NamedConstants
+
* NamedConstants
* NoConcreteBaseClasses
+
* NoConcreteBaseClasses
* NoSilverBullet
+
* NoSilverBullet
* OneResponsibilityRule
+
* OneResponsibilityRule
* OpenClosedPrinciple
+
* OpenClosedPrinciple
* OnceAndOnlyOnce
+
* OnceAndOnlyOnce
* PrematureOptimization
+
* PrematureOptimization
* ProgramToTheInterfaceNotTheImplementation
+
* ProgramToTheInterfaceNotTheImplementation
* ReuseReleaseEquivalencePrinciple
+
* ReuseReleaseEquivalencePrinciple
* SingleResponsibilityPrinciple
+
* SingleResponsibilityPrinciple
* SeparationOfConcerns
+
* SeparationOfConcerns
* SingleChoicePrinciple
+
* SingleChoicePrinciple
* SoftwareCrisis
+
* SoftwareCrisis
* SoftwareReuse
+
* SoftwareReuse
* StableAbstractionsPrinciple
+
* StableAbstractionsPrinciple
* StableDependenciesPrinciple
+
* StableDependenciesPrinciple
* TellDontAsk
+
* TellDontAsk
* YouAintGonnaNeedIt
+
* YouAintGonnaNeedIt
  
 
'''Clumps of maxims'''
 
'''Clumps of maxims'''

Revision as of 00:36, 24 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

  • Acyclic dependencies principle
  • AvoidDowncasting
  • AvoidEquals
  • AvoidInheritanceForImplementation
  • AvoidSideEffects
  • BehavioralCompleteness
  • BigDesignUpFront
  • CommandQuerySeparation
  • CommonClosurePrinciple
  • CommonReusePrinciple
  • CouplingAndCohesion
  • DependencyInversionPrinciple
  • DesignByContract
  • DontBurnYourBaseClass
  • DontExposeMutableAttributes
  • DontRepeatYourself
  • DoTheSimplestThingThatCouldPossiblyWork
  • EncapsulateThatWhichVaries
  • EncapsulationIsHierarchical
  • FatInterfaces
  • FavorCompositionOverInheritance
  • GettersAndSetters
  • GotoConsideredHarmful
  • HideYourDecisions
  • ImpedanceMismatch
  • InformationHiding
  • InterfaceSegregationPrinciple
  • KeepAccessorsAndMutatorsSeparate
  • KeepItSimple
  • LawOfDemeter
  • LiskovSubstitutionPrinciple
  • ModelTheRealWorld
  • NamedConstants
  • NoConcreteBaseClasses
  • NoSilverBullet
  • OneResponsibilityRule
  • OpenClosedPrinciple
  • OnceAndOnlyOnce
  • PrematureOptimization
  • ProgramToTheInterfaceNotTheImplementation
  • ReuseReleaseEquivalencePrinciple
  • SingleResponsibilityPrinciple
  • SeparationOfConcerns
  • SingleChoicePrinciple
  • SoftwareCrisis
  • SoftwareReuse
  • StableAbstractionsPrinciple
  • StableDependenciesPrinciple
  • TellDontAsk
  • YouAintGonnaNeedIt

Clumps of maxims

* JohnsonAndFootesHeuristics:
 * RecursionIntroduction.
 * EliminateCaseAnalysis.
 * ReduceTheNumberOfArguments.
 * ReduceTheSizeOfMethods.
 * 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:
* CodeSmells
Personal tools