Design maxims

From CSSEMediaWiki
(Difference between revisions)
Jump to: navigation, search
m
m
Line 49: Line 49:
 
* [[Reuse release equivalence principle]]
 
* [[Reuse release equivalence principle]]
 
* [[Single responsibility principle]]
 
* [[Single responsibility principle]]
* SeparationOfConcerns
+
* [[Separation of concerns]]
* SingleChoicePrinciple
+
* [[Single choice principle]]
* SoftwareCrisis
+
* [[Software crisis]]
* SoftwareReuse
+
* [[Software reuse]]
* StableAbstractionsPrinciple
+
* [[Stable abstractions principle]]
* StableDependenciesPrinciple
+
* [[Stable dependencies principle]]
 
* [[Tell, Don't Ask]]
 
* [[Tell, Don't Ask]]
* YouAintGonnaNeedIt
+
* [[You ain't gonna need it]]
  
 
'''Clumps of maxims'''
 
'''Clumps of maxims'''
* JohnsonAndFootesHeuristics:
+
* JohnsonAndFootesHeuristics:
 
   * RecursionIntroduction.
 
   * RecursionIntroduction.
 
   * EliminateCaseAnalysis.
 
   * EliminateCaseAnalysis.

Revision as of 02:22, 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

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