编程的首要原则
刘未鹏的 blog 上写了一篇 编程的首要原则(s)是什么? ,这段时间在我的 google reader 上被许多人分享。
我问自己,我目前的首要原则是什么?
其实想说的,那篇里都有人说了。如果非要说首要,我也认可最多人认可的:
KISS - Keep It Simple Stupid
不过对 DRY - Don’t Repeat Yourself 我反而认为是次要的,当然是在和 KISS 相冲突的时候。
如果换一句和 KISS 原则相当分量的话,我会说:不要用愚蠢的方法做事。很矛盾?Repeat Yourself 往往代表了一些愚蠢的方案,且并不 simple ,至少会付出更多的体力。我想,KISS 的最后一个 S 指的是大智若愚的愚,而自做聪明则是另一种愚蠢。
在 KISS 的大原则下,我想其实可以分出一些细节的东西,也是别人都提过的:
最近两年我对同事说的最多的几句话,“弄清你的问题是什么”,“你不一定需要解决这个问题” 。
因为什么都不做才是最简单的。要知道什么可以不做,必须了解你的问题。
面向对象以及复杂软件技术的滥用,或是找不到更 Simple 的方案解决问题(以性能、以需求等为借口去实现更复杂的方案)往往都是对需求了解不清,或者眼光太短。把手段当成了目的。(以为达到目的,必须采用某种手段,而如何应用这种手段就变成了目的)
同时,我觉得过度抽象也来源于对问题的认识不清。我还没想好后面要写什么,实现些什么,所以先利用“抽象” 把其它的部分搭起来。久而久之,不分析具体问题,先做抽象就变成了惯性。而抽象层本身往往是软件中最复杂的部分,离 KISS 原则最远的一块。
Comments
Posted by: 福利工口姬 | (15) April 16, 2014 04:18 PM
Posted by: 赵中 | (14) April 2, 2009 02:39 PM
Posted by: Cloud | (13) March 31, 2009 09:13 PM
Posted by: Sword-Breaker | (12) March 31, 2009 05:34 PM
Posted by: HgG | (11) March 30, 2009 01:55 AM
Posted by: HgG | (10) March 30, 2009 12:55 AM
Posted by: 卡卡 | (9) March 29, 2009 08:05 PM
Posted by: mistapostle | (8) March 24, 2009 02:17 PM
Posted by: hongmu | (7) March 24, 2009 10:45 AM
Posted by: hongmu | (6) March 24, 2009 10:36 AM
Posted by: Spe | (5) March 23, 2009 07:27 PM
Posted by: joe wulf | (4) March 23, 2009 02:41 PM
Posted by: yandong | (3) March 23, 2009 12:24 PM
Posted by: ray | (2) March 23, 2009 09:52 AM
Posted by: jerry | (1) March 23, 2009 01:53 AM