@何为用脑子写程序?
看到这个小标题,有的猿友可能想要喷LZ了,LZ你个1+1货,写程序不用脑子怎么写,难道还真把程序猿当成搬砖的了,况且,就算是搬个砖,要是不动脑子的话,也很容易砸着自己的脚的。
LZ还是要劝各位猿友先莫要激动,待LZ一一道来。
回答一下标题上的小问题,用脑子写程序,并不是说在写程序的同时要动脑子的意思,LZ想要表达的意思是,在动手写代码之前,先用脑子在脑子里(有点绕,0.0)把程序写一遍,然后再动手去写,此为用脑子写程序。
实例:用脑子怎么写程序呢?
这个LZ估计每个程序猿应该都有过这种经历,接下来LZ就说一下LZ是怎么写的,仅供参考,不一定适用于每一个猿友。另外,LZ假设完成某个需求需要的 时间大约是一天,也就是八个小时,下面LZ就以八个小时的耗费时间为例,给各位猿友分享一下LZ在各个步骤中所花费的大概时间。
第一步:看
将与要实现的需求的相关代码仔细的看一遍,理清楚现有的相关代码的逻辑。
举个简单的小例子,比如我们要给某一个列表增加一个显示列,那么我们可能就要看下这几个地方。首先就要看一下这个列表中的字段值是怎么从数据库查出来的,过后就要看一下查出来的字段值是如何从后台传到页面的,然后再看一下在页面中又是如何显示的。
也有一种情况是,你对系统已经非常了解了,又或者现有的相关代码是你刚做过的一个功能,那么有时候这一步是完全可以省掉的。LZ现在已经大部分都没有这一步了,不过如果不确定的话,还是要稍微看一下的。
这一步按八个小时来算的话,LZ花费的时间一般在半个小时左右,不过也可能为零。
第二步:找茬
现在我们已经非常清楚现有代码实现的逻辑了,而我们要做的就是在此基础上修改一些东西或者增加一些东西,下面这个步骤就该找茬了。
找谁的茬呢?
答曰:找需求的茬。
找需求的茬就是要仔细的想一下,在现在的代码基础上,实现当前的需求会不会有什么不妥。
比如,会不会对原来的功能造成影响,会不会实现起来非常困难或者改动非常大,如果是的话,是否存在合理的替代方案,如果有的话,可以去找产品经理商讨一 下。当然还有的时候,应该直接拒绝某些需求,这并不是我们拒绝干活,而是对自己的系统负责任的表现。当然了,如果你做出这个决定的话,必须要有充足的理由 说服你的产品经理,或者是业务人员,又或者是项目经理等等。
在这一步中,这一系列与需求相关的问题,就是我们要思考的。LZ一般在这个阶段,思考的时间是最长的。按八个小时来算的话,这个步骤一般最起码要花费LZ四到五个小时左右的时间。
这其中如果发现需求有问题或是对需求有任何疑问的话,也可能包括了与产品经理、业务人员或是项目经理沟通的时间,如果是系统之间接口的话,可能还包括了和其它系统人员沟通的时间。
第三步:在脑子里写程序
需求确认完,并确保需求的可行性以后,剩下的就只是写代码了。不过LZ一般到了这个时候依然不会动手,LZ会在脑子里把程序写一遍。
具体怎么写的呢?
其实就是想好自己要改哪些地方,还有就是这些地方都怎么改,想好以后,再大概想一想会不会有什么问题。就还拿那个特别简单的例子,就是给某一个列表增加一个显示列的需求,那么就大概需要该这么几个地方,以下是针对LZ现在维护的系统来说的。
第一个就是SQL查询语句要改一下,要增加一个查询的字段,之后就要把多出来的这个字段值与程序中实体的某一个字段做个映射关系存进去传到页面,然后就改一下页面,在列表显示的table中增加一列并显示出相应的值就行了。
这就是一个简单的在脑子里写程序的过程,写完以后,LZ一般会再想一想是否有什么遗漏的地方。这整个过程,一般大约会花费LZ半个小时到一个小时的时间。
第四步:真正动手写程序
在上面三个步骤完成以后,一般已经花费了LZ大概五到六个小时的时间,接下来的时间就是将脑子里写过的程序快速的写出来而已。这个过程LZ花费的时间,大约在半个小时到一个小时之间。
第五步:测试
写完之后,还有一点点时间就是要自己动手测试一下了,不过经过LZ实践证明,大部分情况下,这时候写出来的程序几乎都是没问题的。
小总结
以上便是LZ大部分时候去完成一个需求的大致过程,上面的时间是按八个小时算的,如果换算成比例的话。可以看出LZ每个阶段花费的时间如下所示,为了计算方便,以16为分母。(分母。。是不是好久没听过了呢)
一、看:0至1/16 0至1个小时
二、找茬:8/16至10/16 8至10个小时
三、在脑子里写程序:1/16至2/16 1至2个小时
四、真正动手写程序:1/16至2/16 1至2个小时
五、测试:1/16至2/16 1至2个小时
上面算出来的只是大概的时间比例,实际当中可能会有所波动,但一般情况下,LZ真正动手去写的时间,不会超过1/8。换句话说,如果上司给了LZ一个任 务,这个任务让LZ在一天之内完成。那么你将直接看到的现象就是,你会发现LZ只有大约一个小时是坐在电脑前噼里啪啦敲键盘的,还有半个小时是坐在电脑前 点来点去测试的,其余时间估计就看不见LZ了,或者是看到LZ在电脑前坐着,却不是在敲代码,而是在干别的事。
这些时间LZ都在干嘛呢?
其实这个很不一定,可能是上厕所去了,或是抽烟去了,又或者是与相关同事沟通需求的事去了,又或者是趁着沟通中一些等待的空挡干点其它的事,比如回回邮 件,回复下业务人员的问题,帮助别人的系统解决下问题,或是带带新人等等(LZ的事比较杂,0.0),总之不是在工位上噼里啪啦写代码,但是不要忘了,其 实LZ至始至终都在脑子里进行着当前的开发任务,因此LZ依然可以按时并且轻松的将开发的任务完成。
事实上,这并不是对工作懈怠不负责任的表现,从结果就能看出,至少LZ目前依然稳稳的在职,这说明领导是能看出来你到底是干活没干活的,毕竟结果很重要,任务还是按时完成了。而且LZ这里敢负责任的说,LZ这样看似晃晃悠悠一天写出来的程序绝对比LZ坐那一天憋出来的代码质量要高的多,只不过这是对于LZ个人而言,毕竟LZ也说了,LZ的方式不一定适合所有猿友,不过应该是存在一定的参考价值的。
这就需要各位猿友根据自己的情况去吸优排差了,将LZ所说的糟粕除去,然后收下其中的某些精华。
结束语
看过LZ上一篇文章的细心猿友可能会发现,LZ不就是上一章中的第二种程序猿吗?
只是LZ到底是高斯,还是屌丝,或者是鱼香肉丝,就不得而知了。请猿友们帮LZ鉴定一下吧。
附录
同学们,现在向我们走来的是程序猿方阵!他们穿着拖鞋,披着毛巾,左手拿着键盘,右手举着鼠标,腋下夹着USB转换器。他们因睡眠不足而显得精神不振, 喊着微弱的口号走过主席台,主席问候:程序猿们辛苦了!程序猿方队异口同声地答道:Hello World!