如果你是个程序员,那么你肯定阅读过“养成良好编程习惯”的文章或书籍。这些文章里均会大篇幅的告诉你养成良好编程习惯的好处以及怎样才能做到并且对其中绝大部分你深信不疑。其实我也是,一直在学习模仿中,可是在工作当中也许并不是这样,下面我说一段我痛苦的经历。
在2015年12份,由于用户投诉公司线上产品出现问题急需解决。老板找到了我,经过讨论分析后不能确原因,决定将集群日志收集起来进行分析(将近100台的服务器)。可是如果具体去做呢?这里我和老板发生了意见冲突,老板认为这是临时排查问题让我写java程序分析,而我的建议是让会写shell的协助分析,我把要分析的东西按步骤列出来。对于“临时”解决问题的观点我们意见趋向一致,但是用shell还是java来分析意见冲突,所以呢我列了一下优缺点,最终由于人手不足,决定用java去分析。
到此就开始了我不堪回首的回忆。由于数据在云上面,把所有数据下载下来(压缩后3个多G),怕影响产品运行所以 开发jar,由于我良好的编程习惯,在开发过程中对代码进行了优化,重构,功能齐全,写了10多个接口应对不同的字符串的不同切割、过滤、排序、计算。花了一天的时间最终扔到服务器上,可是在数据分析过程中感觉程序运行较慢,接下来又对计算并发、磁盘写同步进行优化等等。总共花费一天半的时间加班到凌晨,虽然该把结果搞定了,可是我并没有成就感。
因为我发现,我开发了一个功能比较齐全的字符串分割、过滤、排序、计算的工具。这让我感到非常的郁闷,因为linux系统已经提供了很多这样的工具,而我的目的仅仅是临时把结果分析出来就行了,如果直接用现有的linux工具,也许仅仅半天的时间就搞定了。在这说这句话,如果说我没由抱怨老板的意思,那我他妈就时上帝了。排除客观原因,出现这种情况主要归功于我的编程习惯,做了好多无用功。接口不需要那么多,功能不需要那么齐全,也不要那么多优化,更不需要重用的概念。
接下来回归到标题,首先说一下习惯和本能的区别,本能不需要经过大脑思考而由肢体根据环境做出的自然反应,那么习惯呢?个人认为是一种人们做事的一种固定的方式,是受大脑控制的,例如思考-->代码-->检查-->优化,这是程序员的一个固定的工作方式也称为习惯。而我在上述工作中,就出现了代码的优化(重构:易理解、模块化等)的步骤。其实针对于当时的工作场景,优化这个步骤不需要做太多的东西(或者不做),能用就行没有必要浪费多余的时间,尤其通用性上浪费了很多时间,所以有时候好的习惯反而带来不好的结果。在上述工作场景中,应该严格以目标为导向,迅速实现目标为目的。
其实不是我不知道要尽快出结果,而是不做一下子优化,我他妈的心里难受。最后总结一句:除非你的习惯转化为了本能,否则一定要将你的良好习惯合理运用。
网友评论