完成以下步骤:
1、正确的问题
明确问题,这场战役就成功了90%。必须仔细定义一个问题的输入、输出的流程场景和数据范围、以及对应的约束条件和性能指标。对小问题的仔细分析有时可以得到明显的实际益处、几分钟的仔细研究可以大幅度消减代码的长度、程序员时间和程序运行时间。
2、定义数据结构
不同的问题需求需要定义不同的数据结构,有限定义内的稠密集合?稀疏?树?索引?…
3、设计算法
设计复杂度更精巧的算法
4、时间空间折中与双赢
没有双全法,那么就得根据需要用空间换时间,或者相反。通常前者的资源更稀缺需求更重要,当然有时候减少程序的空间需求也会减少运行时间,比如减少了IO操作。
5、简单的设计
正如机械设计师赞扬一个好的系统:“结构简单、部件很少、易于维护、非常坚固”;“设计者确定其设计已经达到了完美的标准不是不能再增加任何东西我,而是不能再减少任何东西。” 更多程序员应该使用该标准来检验自己完成的程序。简单的程序通常比具有相同功能的复杂程序更可靠、更安全、更健壮、更高效、而且易于实现和维护。
ps:就此突然想到了前几日分享的国宝级折纸大师,其完成折纸前反复计算推演才最终仅仅用一张纸不用任何工具折成生动万物,这其实和我们老祖宗高超的榫卯设计一样,不要一根钉子。
高低之别其实是沉浸的匠心,都是工程,从折纸和榫卯中我们可以有很多的思考、灵感和启发,故配上几张图。
掌门艾老师
2017年3月18日晨读且思