睡觉前总结下最近对互联网项目设计的想法
keep it simple and stupid.尽量的保证设计的简单,能把复杂的事情变简单才是最重要的,只要性能可以满足,那么哪个方法简单采用哪个方法,最好能够让心接项目的人在听你讲一遍就知道什么意思,哪怕不看代码也能够想到怎么实现。
用多少设计多少。设计最怕过度设计,一个需求如果看不到那么远,最好现在需要什么就设计什么,不要想我后面还加什么东西,保留一大堆保留字。这样会让开始设计就变得复杂,而且真到扩展的时候才发现,预留的那些功能是不够的,即使够也捉襟见肘。
架构就是把复杂的东西变简单。不要以为越复杂越庞大的架构越牛,真正好的架构是利用种种小的模块拼凑成高楼大厦,就像linux的设计哲学,很多小的组件拼凑成强大的功能,即使修改只要改变一小部分就可以了。
不要做假设。用数据说话,不要用自己的行为认为是用户的行为。可能你只是一小部分用户,真正用户要什么你是不知道的,你要经过调查才可以。另外别以为用户都是很规矩的,就是有输入特殊的用户来考验系统。特别是服务海量用户。
明确需求。知道你为什么要做这个系统,做这个系统有什么作用。技术再好,编码再优美,没有产品也没用。就好比建筑师建造了一座皇宫,但是没有人来参观居住也是无用的。需求明确了,那个方案好,哪个不好,一下子就比出来了。
保持一颗接受变化的心。这个系统做出来要称五年、十年。互联网的变化五年、十年是什么样,谁知道。想太久是没用的,应该想怎么能让系统有更好的扩展能力,或者如果有新变化怎么能迅速构建新系统。试想摩尔定律,硬件变化那么大,现在纠结的内存硬盘可能在几年之后都不是问题,还有互联网产品能撑十年那也是奇迹。
多想设计,少编码。设计的时间要充分,先想到各个角落。不要等编码的时候才想函数几个参数,应该返回什么。那注定会出现写一半发现不对重写的现象,加班救火也不奇怪。
以上观点属睡前随笔,难免有重复和不足之处,欢迎补充!