原则

Written by - kok-s0s

C++

我建议学生们把更多的精力放在学习基本思想上,而不是新技术上,因为新技术在他们毕业之前就有可能过时,而基本思想则永远不会过时。--- David L. Parnas

不仅是软件开发,把生活中的一切事情变得尽可能简单并不一定都是坏事。

代码所有权集体化(Collective Code Ownership)

什么是原则

原则是一种规则、信仰或者指引你的观念,原则通常与价值观或价值体系直接联系。

原则并不是不可改变的法律,更没有明文规定地刻在石头上。而且在编程的时候有时故意违背其中一些原则是有必要的,只要你有充分的理由违背原则,就可以去违背,但是一定要小心!因为结果很可能会出乎你的意料。

保持简单和直接原则(KISS)

任何事情都应该尽可能简单,而不是稍微简单一点。--- Albert Einstein,theoretical physicist,1879-1955

KISS 是「 Keep it simple, stupid 」或「 Keep it simple and stupid 」的缩写。

在极限编程(extreme programming)中,简称 XP,这个原则有一个更有实践意义的名字「 Do the simplest thing that could possibly work 」- 「 DTSTTCPW 」,即简单到只要能够正常工作就好。

KISS 原则皆在软件开发中,把简单当做一个主要的目标,避免做一些没有必要的复杂性的工作。

对于程序员来说,关注简单性可能是最困难的事情之一,并且这是一个终生的学习经验。--- Adrian Bolboaca(@adibolb),April 3,2014,on Twitter

不需要原则(YAGNI)

总是在你真正需要的时候再实现它们,而不是在你只是预见到你需要它们的时候实现它们。--- Ron Jeffries,You‘re not gonna need it!

YAGNI 是「 You aren‘t gonna need it 」的缩写。

YAGNI 原则向投机取巧和过度设计宣战,它的主旨是希望你不要写目前用不上,但将来也需要的代码。

避免复制原则(DRY)

复制和粘贴是一个设计错误。--- David L.Parnas

DRY 是「 Don‘t repeat yourself 」的缩写。我们应该尽可能避免复制,因为复制是一个非常不好的行为。该原则也被称为「 Once And Only Once 」- (OAOO) 原则。

复制是非常危险的,其原因显而易见:当一段代码被修改的时候,也必须相应地修改这段代码的副本,不要抱着不修改副本的期望,可以肯定的是,一定要修改副本。任何复制的代码片段迟早会被忘记,并且,会因为漏改代码的副本而产生 bug。

信息隐藏原则

信息隐藏原则是软件开发中一个众所周知的基本原则。

该原则指出,一段代码调用了另外一段代码,那么,调用者不应该知道被调用者的内部实现细节。否则,调用者就有可能通过修改被调用者的内部实现而完成某个功能,而不是强制性地要求调用者修改自己的代码。

信息隐藏的优点:

高内聚原则

软件开发中的一条通用建议是,任何软件实体(如模块、组建、单元、类、函数等)应该具有很高的(或强的)内聚性。一般来讲,当模块实现定义确切的功能时,应该具有高内聚的特性。

松耦合原则

在软件开发过程中,应该寻求模块间的松耦合(也称为低耦合或弱耦合)。这意味着你应该构建一个系统,在该系统中,每个模块都应该很少使用或不知道其它独立模块的定义。

软件开发中,松耦合的关键是接口

松耦合可以为系统的各个独立的模块提供高度的自治性,该原理可以适用于很多不同的层次:可以用在最小的模块上,当然,还可以用在大型组件的体系结构上。高内聚会促进松耦合,因为具有明确定义责任的模块,通常会依赖于较少的其它模块。

小心优化原则

不成熟的优化是编程中所有问题(或者至少是大部分问题)的根源。--- Donald E.Knuth,American computer scientist

只要没有明确的性能要求,就避免优化。

最小惊讶原则(PLA)

最小惊讶原则(Principle of least astonishment,PLA)是一种设计原则,它指出,设计者应该尽量避免让用户感到惊讶或者不满意。

童子军原则

在离开露营营地的时候,应让露营地比你来的时候更干净。

童子军非常有原则,其中一个原则是,一旦它们发现了一些不好的东西,就立即清理环境中的污染物或那些引起混乱的东西。作为一个负责任的软件工程师,我们应该将这一原则应用于我们的日常工作,每当我们在一段代码中发现需要改进的或者风格不好的代码时,我们应该立即修正它,与这段代码的原创作者是谁都无关紧要。

Top