写了几千行代码以后自己就蒙了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
strahe

写了几千行代码以后自己就蒙了

  •  
  •   strahe 2016 年 3 月 11 日 4059 次点击
    这是一个创建于 3696 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,也可能由于时间紧迫,但感觉更多的原因还是自己的经验不足,开始写代码前没做更多的设计,理解个大概就先写起来,跑起来再说,写了几千行以后,再往后写,就发现有时候不得不重复写一些功能相似的代码,之前写的都不怎么"通用",有一些代码逻辑也不是很好,但都能用,我自己是有写出简洁高效代码的意识的,但就是因为这个,所以如果没开好头,后期就会处于纠结之中,越写越矛盾.
    请问一下怎么提升写好代码的能力,代码质量高,设计合理,还要优雅一些,求老程序员能传授一下自己的经验,谢谢.
    如果要特指语言的话,就 python.

    11 条回复    2016-03-11 18:21:08 +08:00
    finab
        1
    finab  
       2016 年 3 月 11 日 via iPhone   1
    无他,唯手熟尔
    chend
        2
    chend  
       2016 年 3 月 11 日   1
    需求加着加着, 一开始的代码 就乱了~~~
    要么经验丰富(代码经验和业务经验), 合理规划 代码 结构。。
    要么, 写完功能后, 顺便考虑下 可能的需求改动, 重构优化, 代码质量慢慢提高
    lxy
        3
    lxy  
       2016 年 3 月 11 日   1
    哈哈,刚好前几天独自完成了 2000 行的小项目,个人用。其实是第二次写了,把之前的全部推倒重写(之前的 BUG 太多,基本运行不起来,由于代码太乱我都不想再改了)。

    重写的收获很大,简单来说最重要的经验就是自顶向下写代码。先考虑好最上层函数大概需要做什么,然后把需要做的动作写成一个函数,我也是用 python 写的,我觉得 python 有个特别有用的东西就是 pass ,先把顶层的写完,下面一层除了名称外不必考虑太多,主体暂时一律写 pass 。

    比如写个抓帖子的爬虫,最上层就是 get_thread(), check_thread(), get_post(), save_post(),根本不必考虑下层写什么,先把主要的逻辑动作写完。写完后依此下去,考虑 get_thread 主要做什么,一直到最后不可分割的原子动作,每个函数代码可控制在 50 行以内(即使只有不到十行也别觉得太少),而且代码高度可重用。

    另外 python 另一个有用的东西就是装饰器, log 、通用循环结构都可以写成装饰器,可以节省大量的重复代码,简化结构。
    akring
        4
    akring  
       2016 年 3 月 11 日   1
    经验堆砌,还有就是条件允许的情况下多重构,不断用新学到的知识优化代码, keep learning and moving on
    zymmm
        5
    zymmm  
       2016 年 3 月 11 日
    promise
    feiyuanqiu
        6
    feiyuanqiu  
       2016 年 3 月 11 日   1
    推荐看看 clean code (代码整洁之道),工作一两年之后再看这本书感觉简直把自己平时的坏习惯都写到了
    然后写代码的时候一直记着 solid ,看看写的代码是不是符合这个原则,特别是单一职责、开放关闭两个,对写出清晰的类、方法很重要
    WispZhan
        7
    WispZhan  
       2016 年 3 月 11 日   1
    《代码整洁之道》
    《重构:改善既有代码的设计》
    《 Head First :面向对象分析与设计》
    strahe
        8
    strahe  
    OP
       2016 年 3 月 11 日
    @chend 好像是必经之路啊
    strahe
        9
    strahe  
    OP
       2016 年 3 月 11 日
    @lxy 嗯我目前也是这中思维,只是还考虑不到太多情况
    strahe
        10
    strahe  
    OP
       2016 年 3 月 11 日
    @feiyuanqiu
    @WispZhan
    ok, 谢谢
    strahe
        11
    strahe  
    OP
       2016 年 3 月 11 日
    @akring 看来反复写是成长的必经之路
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1485 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 17:00 PVG 01:00 LAX 10:00 JFK 13:00
    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