数学建模社区-数学中国

标题: 看不懂自己的代码,对程序员来说是不可饶恕的 [打印本页]

作者: sdccumcm    时间: 2013-7-9 17:30
标题: 看不懂自己的代码,对程序员来说是不可饶恕的
本帖最后由 sdccumcm 于 2013-7-10 01:22 编辑
; S- U$ e1 j4 P" J: d" I8 T
9 `$ K* g2 n; E- L最近遇到一个事情让我大为不解。一个程序员自豪的宣称他完全看不懂自己一周前写的任何代码。我真的想探明他的这种自豪感从何而来,但无解。他是在骄傲每天写如此多的代码吗?有人会愿意聘请这样的人去写程序吗?" ?& f% N" w, \( m9 t

5 Z* M3 h; I% W" L8 R2 [, T首先让我明确的阐明我对此事的观点:不能理解一周前或一年前自己写的代码,这对一个职业程序员来说是不可饶恕的。
' p8 g2 V5 f4 N) v- q" V6 z
5 g6 ]" b# z/ i' ^- ]
我 就把话放这。现在,让我详细的说一下。我已经兢兢业业的编程编了15年。很早我就接受了一些编程习惯,至今没有改变。我能轻松的看懂我一年前写的代码,甚 至2年前,12年前。各种语言的代码,在各种业务领域里。算法,解析器,web应用,嵌入式控制器,脚本,链接,所有你能想到的。即使有些很早的代码,理 解起来有些困难,但我仍然能从中看出一些模式的影子。
. L% \" c* W, R- }
; A5 D) L5 [9 W+ V, p: {7 d我能做到这些,主要的方法是认识到代码必须易读。自己易读,别人也易读。代码如果不可读,那就会跟不可用的代码一样糟,甚至更糟。如果一段时间后你看不懂你自己写的代码,别人就更不可能看懂了,没有这种可能。不会有任何一个软件产品会因为你而值得骄傲。
9 N) {; G/ c4 d9 ?; \( Q' F% m  ~
/ n2 g( Q; W2 e& c3 \# V' d我 无法用更大的声音强调,让自己的代码易读、易理解是何等的重要。不仅仅是它能让你的软件产品更好,更容易被别人维护,同时,这些代码也将成为你自己的私人 工具箱,你将会在今后的职业生涯里使用、反复的使用它们。拥有这样一个工具箱,你将变得超级的强大,这将是你区别于其他编程高手的重要特征之一。我己经记 不清有多少次,当面对一些似曾相识的问题时,我通过回忆,在我的历史代码库里搜寻,轻松快速的就能找到或整编出问题的解决方案。很显然,你不能理解的代码 是进入不了这样的工具箱里的。2 I3 b  e: W% g2 ]- p
0 L3 q. g7 [+ H/ \* A
这样结束这篇文章似乎有点玩世不恭,我应该解释一下是如何练就这样的功力的。坦率地说,这很难用文字描述,但我尽力。! w8 _: r! p: r4 ~$ X+ ]

+ b0 e( W# T' I3 V1 y4 O* b我 非常确信,我的这种方法也被作家们(以及任何从事创新性职业的人)使用。一旦你写完一段代码(越小越好),你需要停下来,看看它是否易读、易懂。读它,反 复的读它数次。跳出你对这个问题熟知的环境,想象那些完全不知道上下文情况的人在读这段代码。这样的一个人能读懂吗?如果不能,是因为什么?从你的由《代码大全》等好书丰富而成的“代码可读性”百宝箱里找出所有可以的技巧,应用它们,直到你确信这段代码变得易读为止。
# \9 p5 ?& J) k# Q( U& [. J1 w: q9 O
1 R. H+ i, e, m5 i2 Y一旦你满意了,再读一遍。几天后再读一遍。这让我想起了我写一些高深技术的文章时,每一个句子,我都要读上20遍,重写5次。我写代码也经常是如此。完美可以因天赋而成,也可通过无情的重复和实验实现。因为我不具有前者,我就一直坚持着后者。
2 L+ {% k7 o- i7 W% [8 H6 F' B7 u  p! d& c$ M( ^
最后,重构,无畏的改进。如果你遇到一段可以更清晰的代码,那就让它更清晰。改进代码质量是我们这种职业中一种难以把握的附加任务,但当你遇到一个持续一、两年,涉及多人的大型项目后,你自然就会领悟其重要。; T" Y6 l* H9 `% ?0 E3 Q; S

909090.jpg (71.02 KB, 下载次数: 298)

909090.jpg


作者: sdccumcm    时间: 2013-7-10 10:45
加油! 努力 !         
作者: 繁华红尘_任我逍    时间: 2013-7-19 13:23
说得对,我欣赏!
作者: wangzheng3056    时间: 2013-7-22 11:17
同感啊,每次编完的C代码,一年后拿起来就不会用了
作者: sdccumcm    时间: 2013-7-22 17:21
wangzheng3056 发表于 2013-7-22 11:17 $ z% ]9 a& Y- s; h" R5 c! h
同感啊,每次编完的C代码,一年后拿起来就不会用了

+ a( s% e/ t+ G& q) E5 ~7 A
作者: xx372859523    时间: 2013-8-12 14:43
无法想像。。。
作者: gzcy0457    时间: 2013-8-12 15:15
这个东西不应该啊




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5