Design maxims

From CSSEMediaWiki
Revision as of 02:05, 27 July 2008 by Kris Nicholson (Talk | contribs)
Jump to: navigation, search

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