QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2783|回复: 6
打印 上一主题 下一主题

看不懂自己的代码,对程序员来说是不可饶恕的

[复制链接]
字体大小: 正常 放大
sdccumcm 实名认证      会长俱乐部认证 

59

主题

165

听众

5484

积分

升级  9.68%

  • TA的每日心情
    开心
    2015-9-28 12:07
  • 签到天数: 832 天

    [LV.10]以坛为家III

    2012挑战赛参赛者

    邮箱绑定达人 发帖功臣 新人进步奖 风雨历程奖 最具活力勋章

    群组MCM优秀论文解析专题

    群组2012第二期MCM/ICM优秀

    群组科学狂想曲

    群组第二届数模基础实训

    群组学术交流B

    跳转到指定楼层
    1#
    发表于 2013-7-9 17:30 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    本帖最后由 sdccumcm 于 2013-7-10 01:22 编辑
    / R$ m' [  z2 [' F+ `3 e1 R" `: I, {6 m- x! H$ m7 x. y4 P/ }
    最近遇到一个事情让我大为不解。一个程序员自豪的宣称他完全看不懂自己一周前写的任何代码。我真的想探明他的这种自豪感从何而来,但无解。他是在骄傲每天写如此多的代码吗?有人会愿意聘请这样的人去写程序吗?- O, H9 m3 L9 z
    % ^( U2 P) D- y; x' f9 ]
    首先让我明确的阐明我对此事的观点:不能理解一周前或一年前自己写的代码,这对一个职业程序员来说是不可饶恕的。- W' W& c( |' c+ E

    / m' m( @( j* X, a/ H% y* h8 x我 就把话放这。现在,让我详细的说一下。我已经兢兢业业的编程编了15年。很早我就接受了一些编程习惯,至今没有改变。我能轻松的看懂我一年前写的代码,甚 至2年前,12年前。各种语言的代码,在各种业务领域里。算法,解析器,web应用,嵌入式控制器,脚本,链接,所有你能想到的。即使有些很早的代码,理 解起来有些困难,但我仍然能从中看出一些模式的影子。
      k: c% [1 j: z: h9 \. @& ?6 y
    ' b9 m8 [. g5 |3 E9 O4 y我能做到这些,主要的方法是认识到代码必须易读。自己易读,别人也易读。代码如果不可读,那就会跟不可用的代码一样糟,甚至更糟。如果一段时间后你看不懂你自己写的代码,别人就更不可能看懂了,没有这种可能。不会有任何一个软件产品会因为你而值得骄傲。
    7 r0 a: ^8 ]( Y/ p4 M
    ) S) `% s; r0 i2 u我 无法用更大的声音强调,让自己的代码易读、易理解是何等的重要。不仅仅是它能让你的软件产品更好,更容易被别人维护,同时,这些代码也将成为你自己的私人 工具箱,你将会在今后的职业生涯里使用、反复的使用它们。拥有这样一个工具箱,你将变得超级的强大,这将是你区别于其他编程高手的重要特征之一。我己经记 不清有多少次,当面对一些似曾相识的问题时,我通过回忆,在我的历史代码库里搜寻,轻松快速的就能找到或整编出问题的解决方案。很显然,你不能理解的代码 是进入不了这样的工具箱里的。; c* A& Y6 c9 e2 T, N0 @+ f

    ; _2 i4 G6 B. U这样结束这篇文章似乎有点玩世不恭,我应该解释一下是如何练就这样的功力的。坦率地说,这很难用文字描述,但我尽力。) z/ }6 `" B* s+ r( K1 x; i

    * @) L9 ?1 F0 }% g/ x  b6 h我 非常确信,我的这种方法也被作家们(以及任何从事创新性职业的人)使用。一旦你写完一段代码(越小越好),你需要停下来,看看它是否易读、易懂。读它,反 复的读它数次。跳出你对这个问题熟知的环境,想象那些完全不知道上下文情况的人在读这段代码。这样的一个人能读懂吗?如果不能,是因为什么?从你的由《代码大全》等好书丰富而成的“代码可读性”百宝箱里找出所有可以的技巧,应用它们,直到你确信这段代码变得易读为止。
    , t8 }# H, u( O( u
    : n: _9 G: @- s, \' q. i一旦你满意了,再读一遍。几天后再读一遍。这让我想起了我写一些高深技术的文章时,每一个句子,我都要读上20遍,重写5次。我写代码也经常是如此。完美可以因天赋而成,也可通过无情的重复和实验实现。因为我不具有前者,我就一直坚持着后者。
    5 S9 P; z- \8 }4 L. a" U
    + E$ H) j7 {) O- H最后,重构,无畏的改进。如果你遇到一段可以更清晰的代码,那就让它更清晰。改进代码质量是我们这种职业中一种难以把握的附加任务,但当你遇到一个持续一、两年,涉及多人的大型项目后,你自然就会领悟其重要。
    , q% {$ K" V4 @0 z

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

    909090.jpg

    zan
    转播转播0 分享淘帖0 分享分享2 收藏收藏0 支持支持0 反对反对0 微信微信
    Learn from yesterday, live for today, hope for tomorrow. 借鉴昨天,活在今天,憧憬明天。
    sdccumcm 实名认证      会长俱乐部认证 

    59

    主题

    165

    听众

    5484

    积分

    升级  9.68%

  • TA的每日心情
    开心
    2015-9-28 12:07
  • 签到天数: 832 天

    [LV.10]以坛为家III

    2012挑战赛参赛者

    邮箱绑定达人 发帖功臣 新人进步奖 风雨历程奖 最具活力勋章

    群组MCM优秀论文解析专题

    群组2012第二期MCM/ICM优秀

    群组科学狂想曲

    群组第二届数模基础实训

    群组学术交流B

    回复

    使用道具 举报

    1

    主题

    8

    听众

    737

    积分

    升级  34.25%

  • TA的每日心情
    奋斗
    2014-11-15 11:52
  • 签到天数: 207 天

    [LV.7]常住居民III

    自我介绍
    一朝数模,终生受益!

    群组2013年数学建模国赛备

    回复

    使用道具 举报

    937

    主题

    117

    听众

    3万

    积分

    升级  0%

  • TA的每日心情

    2020-10-25 11:55
  • 签到天数: 264 天

    [LV.8]以坛为家I

    自我介绍
    内蒙古大学计算机学院

    社区QQ达人 金点子奖 助人为乐奖 风雨历程奖

    群组2013年数学建模国赛备

    回复

    使用道具 举报

    sdccumcm 实名认证      会长俱乐部认证 

    59

    主题

    165

    听众

    5484

    积分

    升级  9.68%

  • TA的每日心情
    开心
    2015-9-28 12:07
  • 签到天数: 832 天

    [LV.10]以坛为家III

    2012挑战赛参赛者

    邮箱绑定达人 发帖功臣 新人进步奖 风雨历程奖 最具活力勋章

    群组MCM优秀论文解析专题

    群组2012第二期MCM/ICM优秀

    群组科学狂想曲

    群组第二届数模基础实训

    群组学术交流B

    wangzheng3056 发表于 2013-7-22 11:17
    ( m9 K' b* X3 x  G) L" H$ u% s6 M8 K同感啊,每次编完的C代码,一年后拿起来就不会用了

    3 T, x) R7 x8 Q6 w0 C7 n) {
    Learn from yesterday, live for today, hope for tomorrow. 借鉴昨天,活在今天,憧憬明天。
    回复

    使用道具 举报

    1

    主题

    6

    听众

    187

    积分

  • TA的每日心情
    慵懒
    2014-11-9 09:25
  • 签到天数: 72 天

    [LV.6]常住居民II

    自我介绍
    ......

    新人进步奖

    回复

    使用道具 举报

    gzcy0457        

    0

    主题

    0

    听众

    4

    积分

    升级  80%

    该用户从未签到

    自我介绍
    爱好广泛
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-19 10:27 , Processed in 1.107526 second(s), 97 queries .

    回顶部