| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 765 人关注过本帖
标题:克服敲代码之“痒”
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
结帖率:100%
收藏
 问题点数:0 回复次数:8 
克服敲代码之“痒”

《程序员》杂志

2012年12月刊

摘要:程序员要有哪些职业素养?关于这个话题,已经有很多资料了。本文作者根据自己的经验和观察,谈谈“程序员的职业素养”的一个方面,就是“克制”——克制写代码的冲动。


许多年前我刚开始学编程时,朋友曾说过一个笑话:差劲的程序员有两种,一种是开始就写main函数的;还有一种是上来就上网找各种类库源代码的。当时我并不能完全理解:编程序,不去找类库源代码,不从main函数开始,那要怎么做呢?后来才逐渐明白,上来就写main函数,或者上来就找类库找源代码,归根到底都是因为不能克制对于代码的冲动。直接写代码当然很“爽”,很有“成就感”。可是,这样做真的是好事吗?

在现实生活中,我确实看到相当多的程序员写代码的冲动相当强烈,甚至难以克制。这可能是因为任何软件都需要以代码的形式来实现,拿到一个任务,直接写代码可以为程序员带来强烈的成就感。在心里想个明白或在纸上写写画画,反而成了一种难以克制的煎熬。但有经验的人都知道,程序不等于代码,程序的含义和复杂性远远超过代码;没有明晰的需求,没有清楚的头脑,没有良好的规划,写出来的代码就成了无源之水,无本之木,写得越爽,后果可能越严重。

我曾经见过一套系统,其中充满了各种状态码的条件判断,这种情况本来很正常,不幸的是所有的状态码都是硬编码的数字,整个系统就是一本天书:一会儿判断这里是否等于2,一会儿判断那里是否大于7……究其原因是程序员觉得这些状态码无非就是“用数字代表状态”,所以随便选些数字就好了,2代表什么,7对应什么,自己记得就好了。更重要的是,硬编码的状态码“用起来方便”,敲代码的速度大大提升——不需要查找变量,也不需要输入整个变量名。这种系统的问题相信大家都猜得到,维护和修改起来无比痛苦。因此,尽管写这些程序的程序员已有一两年甚至更多年的工作经验,但很难说他们有“职业素养”。

与此相反,重构的人员吸取了之前的教训。虽然全部硬编码看起来不爽,用起来更不爽,人人都有立刻动手改掉它的冲动,但重构时不是首先改代码,而是先仔细阅读程序,编写了一份包含所有状态码的图表(并且打印出来供随时查阅),再根据状态码的意义和使用场景,重新设计状态码(因为各个状态之间还存在逻辑关系,所以需要以自定义类型表示状态),最后才动手编码完成重构。事实证明,这种策略是非常成功的:阅读代码、制定图表、重新设计需要三周的时间,真正的重构只用几天就顺利完成了,而且从此以后维护和修改的难度大大降低,真正达到了重构的目的。完成重构工作的程序员,工作经验并不比最初编写程序的人多,他们没有一开始就写代码,甚至没有花太多时间在代码上,更没有用到高深莫测的技术,但他们身上体现出来的,恰恰是可贵的职业素养。

几乎所有程序员都喜欢狂敲代码的快感,但职业程序员必须要克制写代码的冲动,在写代码之前花更多时间理解需求,设计系统,制定规划,这样写出来的代码才会更加精练,更加聪明,整个程序也因此更有价值。贡献更有价值的程序才是程序员职业素养的体现。

作者余晟,非正统技术爱好者,毕业于计算机系,副修中文,《正则指引》作者。
搜索更多相关主题的帖子: 源代码 程序员 学编程 笑话 朋友 
2014-04-22 11:03
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
做好设计再写代码

总有那身价贱的人给作业贴回复完整的代码
2014-04-22 11:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
這裡追尋敲代碼快感的人太多

授人以渔,不授人以鱼。
2014-04-22 18:02
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11782
专家分:43421
注 册:2006-5-13
收藏
得分:0 
写代码最立竿见影

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-04-22 19:16
小习小习
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:6
帖 子:1467
专家分:4792
注 册:2012-7-2
收藏
得分:0 
顶一下

实现自己既定的目标,必须能耐得住寂寞单干。
2014-04-22 21:12
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:0 
学习了
2014-04-23 18:05
雯霖
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:湖南某个角落
等 级:贵宾
威 望:13
帖 子:1504
专家分:2629
注 册:2007-4-6
收藏
得分:0 
赞一个

没有留不下的城市,只有回不去的过往。
2014-04-24 08:35
surface
Rank: 1
等 级:新手上路
帖 子:69
专家分:0
注 册:2013-8-8
收藏
得分:0 
顶起!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2014-05-02 22:53
yantietuo
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-5-7
收藏
得分:0 
有一点道理,但是只要是学习都是珍贵的,尤其是计算机爱好者
2014-05-07 17:10
快速回复:克服敲代码之“痒”
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024977 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved