程序设计过程中的简单原则
这里的"简单"有两层意思,一是程序的功能简单,只做必须做的事情;一是程序模块简单,只做应该做的事情。
先说程序的功能。如果一个程序过于复杂,往往会将开发人员从一开始就陷入复杂的逻辑中去,同时也增加了测试的难度,甚至有些代码可能从来就没被执行过。这就留下了安全隐患,增加了以后调试的难度。过于复杂的设计,通常被称做过度设计。
再说说模块。常常有这样的代码,作者好像对调用者很不放心,在每个函数里都加入了大量的容错处理,对上层调用者可能出的各种错误进行纠正;还有一些代码,一开始就先工作在某种默认工作状态,由调用者来改变它;还有一些代码,反反复复地与调用者来回交流,你是不是设错了某个值啊?要不要我帮你改成某个正确的值啊...
这简直太体贴了,或者说太逻嗦了,或者说太低效了。
程序过程就是思想的过程,要先设计最重要的功能,编码,测试,然后再进一步设计次重要的功能,然后再编码,再测试...如此反复,不断迭代。罗马不是一天建成的,完美功能的程序也不是一开始就写出来的。
一个团队里如果有人不称职,要么能力不够,要么逻辑堪混乱,要么逻里逻嗦,要么自做主张,这都会导致团队的效率下降,增加了出错的概率。
应用程序其实就是这样的团队的领导者,只有命令者逻辑清晰,执行者称职,团体的效率才可能高。
团队里每个人都只应承担有限的责任,自己是称职的,并且相信别人也是称值的。程序模块应该只完成单一的功能,不为别的模块可能犯的错误做过多的假设,不悄悄地做一些违背调用者本意的事情。
世界本来很简单,都是人们把它搞复杂了。
先说程序的功能。如果一个程序过于复杂,往往会将开发人员从一开始就陷入复杂的逻辑中去,同时也增加了测试的难度,甚至有些代码可能从来就没被执行过。这就留下了安全隐患,增加了以后调试的难度。过于复杂的设计,通常被称做过度设计。
再说说模块。常常有这样的代码,作者好像对调用者很不放心,在每个函数里都加入了大量的容错处理,对上层调用者可能出的各种错误进行纠正;还有一些代码,一开始就先工作在某种默认工作状态,由调用者来改变它;还有一些代码,反反复复地与调用者来回交流,你是不是设错了某个值啊?要不要我帮你改成某个正确的值啊...
这简直太体贴了,或者说太逻嗦了,或者说太低效了。
程序过程就是思想的过程,要先设计最重要的功能,编码,测试,然后再进一步设计次重要的功能,然后再编码,再测试...如此反复,不断迭代。罗马不是一天建成的,完美功能的程序也不是一开始就写出来的。
一个团队里如果有人不称职,要么能力不够,要么逻辑堪混乱,要么逻里逻嗦,要么自做主张,这都会导致团队的效率下降,增加了出错的概率。
应用程序其实就是这样的团队的领导者,只有命令者逻辑清晰,执行者称职,团体的效率才可能高。
团队里每个人都只应承担有限的责任,自己是称职的,并且相信别人也是称值的。程序模块应该只完成单一的功能,不为别的模块可能犯的错误做过多的假设,不悄悄地做一些违背调用者本意的事情。
世界本来很简单,都是人们把它搞复杂了。