面向对象设计原则

本文介绍在《clean code》中的面向对象设计原则

KISS(Keep it simple and stupid)

Everything should be made as simple as possible, but not simpler.

KISS原则表明在软件开发过程中应该尽可能的简单,对于不必要的复杂应该要避免。

YAGNI(You Ain’t Gonna Need It)

Always implement things when you actually need them, never when you just foresee that you need them.

YAGNI原则表明在开发过程中不要写那些现在不需要,但是你认为未来会用得上的代码。

DRY(Don’t repeat yourself)

Copy and paste is a design error.

Information Hiding

one piece of code that calls another piece of code should not know internals about that other piece of code

Strong Cohesion

功能上的聚合(funcitonal cohension),我们将多个模块聚合在一起因为它们都是为了完成一个功能(这里的目标是说同一个类里面)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class HighCohesion  {
private:
  int _elementA;
  int _elementB;
public:
  int MethodA() {
    var returnValue = SomeOtherMethod(_elementA);
    return SomeVeryOtherMethod(_elementB);
  }
  void PrintValues() {
    Console.WriteLine(_elementB);
  }
};

Loose Coupling

Coupling: 指的是一个类知道另一个类信息的多少。

Tight coupling: 指一个类紧紧的跟另一个类绑定在一起,修改一个类你必须修改另一个类

Loose coupling: 类与类之间的内在关系越少越好。

Be Careful with Optimizations

Premature optimization is the root of all evil (or at least most of it) in programming.

只要没有明显的性能要求要满足,尽量不要去进行优化。

Principle of Least Astonishment

在设计API接口的时候,不应该给调用者出现不期望的操作或信息(比如,控制信息,具有迷惑性错误信息)。

The Boy Scout Rule

Always leave the campground cleaner than you found it.

不论什么时候我们发现代码有需要提升的地方,我们应该立刻进行修改。

updatedupdated2021-11-062021-11-06