方法革命历程
今天老大让统计下我们这个项目的代码量,就从网上找了个软件把项目的20多个模块的代码量分别统计了下,不算测试代码总计10万行多点。其中有自己的两万,以前从来没有统计过自己项目的代码量,别人问起的时候自己一点概念都没有。在遇到老大之前对于软件的很多概念基本上为0,没有方向。
仔细想了想,这一年来其实同一个模块前前后后差不多写了三个版本。第一版是标准的SmartUI,第二版本来是想把领域层和ui层分开,但是只是从概念上作了区分,而实际上并没有分开,当然比起第一版代码量减少了很多,对之前完全拼脑力的状况改善了不少,拿给用户虽然用的也不错,但是需求的变更带给我的麻烦还是很多,而且那段时间老大经常给灌输庖丁解牛的概念,让有机会尝试分层设计,我也开始非常正式的关注分层设计和一些设计模式,开始看一些软件设计的经典,大部分都是思想性的为主,当然这和自己的性格有关,如果想让自己心服口服的改变做事方式,必须要对这种方式有强烈的认同感。之后开始试着把前面项目的模型用静态类图画出来,这样可以提供一个和老大沟通的平台,之后就拿着最原始的类图开始了我漫长的半年的设计方式的转变。这是个痛苦的历程,遇到无数次无法“知行合一”(最近在看明朝大哲学家王守仁的历史,所以现学现用)的情况,曾经无数次想过放弃,想用回原来的老路子,无数个晚上在家里自我折磨,其间模型修改过不下20次,代码废过无数,终于看到了曙光,最终完成了我的第三版。庆幸自己的坚持,也感谢老大的不厌其烦。第三版终于按照分层设计的概念分成UI层、领域层和数据存储层,任何一层的修改都不会牵扯到其他层,而且领域层的设计也考虑了未来的需求,结构稳定。第三版完成后突然间有了质的飞跃,这也是我第一个有完整设计的软件。当然我也给了自己一个奖励就是新疆之行。认为有以下几个经验总结:
1、代码写到10000行是个坎儿,这时候会遇到天花板,当然能力超强的人除外,虽然还可以继续写但之后就是要拼体力,这时候就一定要思考是否方法出了问题。否则可能一辈子只能写小软件,或者给你个领导的位子都不知道该怎么当。
2、写oo软件,很多问题只有站在一定高度才能体现出来,所以看问题的角度一定要改变,这样才能学会如何抽象。抽象程度不够,写出来的东西怎么看怎么别扭,当然抽象也要有个度,过犹不及,所以具体问题具体对待。
3、做设计和实现的过程中一定要时刻记住保持概念的完整性。虽然这个词我已经要听烂了但是体会还不是很深,还要继续。
4、在尝试改变方法之前一定要让自己从心里对新方法有认同感,否则痛苦的经历很容易让人放弃。
5、在学习的过程中要分清主次,把握住大方向,不能在细节上钻牛角尖,否则特别容易忘了目标。有时候不要太勤快,懒有懒得好处。
6、写软件之前一定要做设计,至少领域层的设计不能省。
7、实现的代码一定要严格按照设计的类图来做,不能偷懒,图上没有体现的依赖坚决不能依赖,图上看不到的代码里也绝对不能让看到。如果发现有问题一定要返回去考虑设计是否有问题。设计是代码的原型,代码是对设计的检验,这在改变方法初期尤为重要,因为这时候以前的习惯经常会影响你。
8、前期一定要注意知识的积累,虽然看了可能不懂,但也要混个眼熟,知识积累到一定程度才能起作用。
9、不用没信心,不用觉得自卑,你碰到的问题基本上每个人都会碰到,国外的很多大牛都是这样过来的所以他们才研究这些模式和方法。至少我老大说他曾经也是我这水平。关键是要认识到自己的问题所在。
10、这个过程很痛苦,但一定要坚持,放弃了一切都等于白搭。
就这些了,也算是对自己的肯定和鼓励。