V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kid177
V2EX  ›  问与答

怎么样可以写出优美的代码?

  •  
  •   kid177 · 2013-08-15 09:23:13 +08:00 · 3258 次点击
    这是一个创建于 4126 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大学的时候没做过项目但是有搞过ACM,不过没写过工程量特别大的代码,所以感觉结构啥的混乱一点也可以看。但是现在实习了(C++程序员=。=),代码感觉都是一堆一堆的,总感觉写不出易懂又容易改的代码。
    现在就感觉自己是想到什么写什么,然后代码结构很乱,然后代码改起来又特别麻烦总是一点点地方可能就要改好多处。看同事的代码发现结构也很清晰,看起来很容易懂,而且感觉如果要修改的话也只需要修改部分地方就好了。感觉很不错。
    不知道怎么样才能写出更好更优美的代码??大家有什么好的方法吗=。=
    14 条回复    1970-01-01 08:00:00 +08:00
    BOOM
        1
    BOOM  
       2013-08-15 09:38:35 +08:00
    其实只要自己喜欢就可以了
    我活在我自己的世界里
    happypy1
        2
    happypy1  
       2013-08-15 10:04:31 +08:00
    有一本书值得推荐阅读:clean code - a handbook of Agile Software Craftsmanship
    refresh
        3
    refresh  
       2013-08-15 10:17:20 +08:00
    不停地造轮子,再对比别人的轮子,不停地写,不停地改,然后你就成牛人了
    luikore
        4
    luikore  
       2013-08-15 10:24:44 +08:00
    想清楚再动手, 思路清晰代码自然清晰
    denger
        5
    denger  
       2013-08-15 11:26:59 +08:00
    看优秀开源软件/框架的代码
    thinkif
        6
    thinkif  
       2013-08-15 11:41:07 +08:00
    如果写的时候匆忙,写出了Quick & Dirty的代码,那写完某个函数或功能或模块(总之自己找到一个平衡点)就对代码进行重构,该抽象的就抽,该简化的就简
    kid177
        7
    kid177  
    OP
       2013-08-15 12:36:43 +08:00
    @happypy1 嗯,谢谢推荐
    @refresh 是个办法,不过感觉有点浪费时间?
    @luikore 就是说写之前先把代码框架构造好,然后再慢慢的去填充是吗?
    @denger ^_^好方法
    @thinkif 现在就是这样做的,写完以后把代码重构,不过感觉效率好低。如果写特别长的重构都要消耗很多时间
    luikore
        8
    luikore  
       2013-08-15 13:03:50 +08:00
    @kid177 你说的是自上而下组织代码, 但那是在想清楚之后的事情了. 而且自上而下还是自下而上看实际情况, TDD就先写调用方再写被调用方, 但有些不确定的地方可能就要自下而上, 一点点渐进增强...

    重构消耗时间是多是因为写的时候没去思考(what why how), 也没有 DRY(don't repeat yourself) 的意识, 啪啪啪一大坨就上去了... 你可以通过调整架构, 提取函数等方法转移复杂性, 但是没有降低复杂性... 如果思路清晰, 理解了业务也熟悉了语言和库, 往往能直击要害一两行搞定, 重构阶段就不怎么费力了.
    wang2191195
        9
    wang2191195  
       2013-08-15 15:14:05 +08:00
    多想 多写 多重写
    FrankFang128
        10
    FrankFang128  
       2013-08-15 15:17:41 +08:00
    命名最重要,最好不要缩写。
    我见过的ACM的人命名的变量都是很短的名字,无法阅读。
    kid177
        11
    kid177  
    OP
       2013-08-15 17:56:44 +08:00
    @FrankFang128 命名是个难题=。= 英语刚过4级的水平,每次命名变量都不知道该怎么办...
    ipconfiger
        12
    ipconfiger  
       2013-08-15 17:58:02 +08:00
    https://github.com/ipconfiger/baiduPushWrapper 来试试看这个代码好懂不?
    guchengf
        13
    guchengf  
       2013-08-15 17:58:41 +08:00
    @kid177 把命名写得像英语美文一样流畅,并且使用驼峰式的命名方式
    kid177
        14
    kid177  
    OP
       2013-08-15 18:41:10 +08:00
    @luokore 嗯,最近准备多看看源码,然后自己多去写写这种大代码量的程序。应该会有提高吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2694 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 07:41 · PVG 15:41 · LAX 23:41 · JFK 02:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.