关于烂代码的那些事(中) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 成的内容
axb
V2EX    程序员

关于烂代码的那些事(中)

  •  
  •   axb 2015-08-07 10:03:12 +08:00 3553 次点击
    这是一个创建于 3770 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近部门在组织bootcamp,正好我负责培训代码质量部分,在培训课程中让大家花了不少时间去讨论、改进、完善自己的代码。虽然刚毕业的同学对于代码质量都很用心,但最终呈现出来的质量仍然没能达到“十分优秀”的程度。 究其原因,主要是不了解好的代码“应该”是什么样的。

    这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣。
    地址:
    http://blog.2baxb.me/archives/1378

    上一篇,关于烂代码产生的原因和现象:
    http://blog.2baxb.me/archives/1343
    4 条回复    2015-08-08 00:24:09 +08:00
    Ahri
        1
    Ahri  
       2015-08-07 10:15:01 +08:00 via iPhone
    不错的文章,赞一个。
    msg7086
        2
    msg7086  
       2015-08-07 13:21:18 +08:00
    最近正好到了要重构一大坨翔的日子……
    skyshit
        3
    skyshit  
       2015-08-07 21:45:23 +08:00
    好文章!看的出楼主写这两篇文章都相当地用心。

    在此也想聊聊自己对高质量代码的一点粗浅理解。

    在阅读<clean code>一书的过程中让我印象最深刻的是作者对代码和报纸的比喻。

    当我们读报纸文章的时候,在最顶端我们希望有一个标题告诉我们这篇文章要描述的是什么内容,让我们能快速决定这是否是我们想要阅读的内容。然后第一段告诉我们整篇文章的大纲,然后继续阅读下去时是各个大纲中的细节,而且在不断深入的过程中细节越来越详细。

    好的代码遵循抽象级别分层原则,相同抽象级别的代码组织在一起,低抽象级别的代码组织成更高抽象级别的代码,让读代码就像读报纸一样。

    代码抽象分层让程序员能快速确认哪一部分代码的作用是什么,在运维和修改代码的过程中最怕的是看不懂某一段代码的意图是什么。代码抽象的分层让代码更易阅读,对于测试能根据不同的抽象层次编写具有针对性的测试用例,对于运维能快速定位到问题出在哪一部分代码。

    我认为,代码的抽象在实践中就是封装的过程,只是在以前我一直不知道封装有层次的划分,写代码时总是有一种在瞎写的感觉。
    members
        4
    members  
       2015-08-08 00:24:09 +08:00
    感谢。
    正好最近处于一个关键时期,学习了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1111 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSON: 3.9.8.5 24ms UTC 17:41 PVG 01:41 LAX 09:41 JFK 12:41
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86