Create your own awesome maps

Even on the go

with our free apps for iPhone, iPad and Android

Get Started

Already have an account?
Log In

Software Design by Mind Map: Software Design
5.0 stars - 1 reviews range from 0 to 5

Software Design

Goals

Scalable

User Friendly

Intuitive Interface

Well Documented

Maintainable

Feature Complete

Reliable

Responsive and Fast

Guidelines

Object Oriented Programming

Law of Demeter

Favor composition over inheritance.

Open-Closed Principle (OCP) - Classes should be open for extension, but closed for modification.

Tell, don't ask.

Don't repeat yourself.

Follow the Principle of Least Surprise.

Separate code that varies from code that stays the same.

Program to an interface, not an implementation.

You're Not Going To Need It (YAGNI) - Favors Simplicity over Completeness.

Design to avoid Rigidity, Fragility, and Immobility.

Principles

Simplicity

Consistency

Completeness

Correctness

Efficiency

Clarity

Portability

Code Safety

Security

Intuitive

OO

Low Coupling

High Cohesion

Polymorphism

Encapsulation

Philosophies

Worse is Better

MIT approach (The Right Thing)

Code Smells

Duplicated Code

Long Method

Large Class

Long Parameter List

Divergent Change

Shotgun Surgery

Data Clumps

Primitive Obsession

Switch Statement

Parallel Inheritance Hierarchy

Lazy Class

Eliminate unuseful classes

Speculative Generality

Temporary Field

Message Chains

Middle Man

Inappropriate Intimacy

Alternative Classes with different interfaces

Incomplete Library Class

Data Class

Refused Bequest

Comments

Patterns