读代码学编程 - 请问在哪儿能够找到优秀的代码用来阅读呢? - V2EX
gujiaxi

读代码学编程 - 请问在哪儿能够找到优秀的代码用来阅读呢?

  •  
  •   gujiaxi May 25, 2012 4285 views
    This topic created in 5105 days ago, the information mentioned may be changed or developed.
    很多时候自己的代码虽然能够工作(just work),但是总觉得有点dirty,想要看看优秀的代码应该是怎么样的,或者有没有什么关于写出优秀代码的书推荐?
    谢谢
    17 replies    1970-01-01 08:00:00 +08:00
    virgil
        1
    virgil  
       May 25, 2012
    github上有很多,不知道你所说的什么才算优秀的代码,我觉得这个应该所一个过程吧,你不能一步就能够达到顶端,只有反复的磨练。
    kidfolk
        2
    kidfolk  
       May 25, 2012
    看开源项目的代码,或者直接参与开源项目
    gujiaxi
        3
    gujiaxi  
    OP
       May 25, 2012
    @virgil github的话……林子大了你懂的……
    优秀代码的话,我也没法确切地定义,只是想避免一些弯路,养成好的编程习惯,虽然code style可能每个人都不一样,但总有糟糕的风格可以避免吧。
    ufo22940268
        4
    ufo22940268  
       May 25, 2012
    看了《clean code》受益匪浅
    humiaozuzu
        5
    humiaozuzu  
       May 25, 2012
    其实这个事情和写作文一样的,平时如果积累的素材足够多,用的时候就可以有很多很好的参考例子来让你的项目变的更加完美,仅仅靠搜索引擎找到的可能只是用的最多的实践,而不是最佳;要从根本上解决问题,还是要解决素材问题,建议平时多多去 hacker news/reddit上面逛逛,还有quora和国内的一些靠谱的社区(v2ex/知乎/ruby-china etc),以及google reader
    haohaolee
        6
    haohaolee  
       May 25, 2012
    这事儿和个人品味也有关。不挑食的话,久了自然就形成自己的品味了
    kojp
        7
    kojp  
       May 25, 2012
    我只想说LZ作为一个学生党,真的已经是很强的 了! 膜拜中~~~


    代码,感觉是外国人写的都比较clean。(这样好像会被喷的)
    mozartgho
        8
    mozartgho  
       May 25, 2012
    上github,上面有很多优秀的代码
    virgil
        9
    virgil  
       May 25, 2012
    @gujiaxi 的确,我觉得可以看看那些很经典的框架源代码,那个相对来说应该很clean了,思想也很好,不过没有很好的基础的看我觉得很吃力。
    pepsin
        10
    pepsin  
       May 26, 2012
    我感觉实际实现的话都会或多或少略脏,因为语言还有Libary的很多特性不可能谁都全部掌握,而很多时候你费劲写的脏兮兮的代码或许语言或者Libary已经有现成的实现了。

    高手就是多知道这些,然后熟练那些特性。比如Ruby里熟练使用yield配合block可以写很多很干净的东西,但是如果不懂或不熟练,很可能就会写几个长起来一样细节不同的方法再结合switch或者if结构。更进阶的像Proc,method_missing这些就更厉害了,还有openstruct。

    不过缺点就是不明白这些的人会觉得像魔法。。。
    pepsin
        11
    pepsin  
       May 26, 2012
    对了,上面说那么多结果忘了给楼主建议了,相比看代码,实际实践到一定层次后看点进阶的书或许更好?或者你接触领域里大牛们的blog。
    Livid
        12
    Livid  
    MOD
    PRO
       May 26, 2012
    你需要具体是哪门语言的 good code 呢?
    9hills
        13
    9hills  
       May 26, 2012
    @pepsin linux kernel中也有很多magic code.初学者还是看一些中规中矩的代码比较好。
    sampeng
        14
    sampeng  
       May 26, 2012
    以前我也一直这么想。。。
    现在嘛。。。
    先写,实现需求。只是告诫自己注意该注意的。但重点不是这个。。。重点是重构!!。隔一段时间回头看看自己的代码。不是看看而已就拉到了。是要重构它。让他变漂亮。久而久之,代码就很感觉了。。

    做的每一件事都把代码当自己的生命看待,而不是赚钱工具。代码能不好都难。。。看一份代码是可以看出编码者在写这份代码的心情的。。。

    另外。。不要中文里面含英文单词。。其实这是很不好的习惯。。。
    marvinII
        15
    marvinII  
       May 26, 2012   1
    1. 这个问题reddit上以前见过,推荐的回复里是读Lua的解释器代码,信噪比很高,因为由三个高手打磨了很多年,又比较小。

    2. 还有推荐Qemu的,可以开阔一下多体系结构的眼界,看看作者如何游刃有余的处理棘手的跨平台虚拟机。

    3. Beautiful Code这本书里也有很多推荐,但规模大小跨度很大,比如Brain Kernighan推荐的Rob Pike写的十几行的正则表达式匹配,FIT框架,到SVN之类。

    4. SICP里的代码都很好;只是很难吃透。

    5. Software Tools in PASCAL 是介绍早期unix的常用工具如何写就的,Kernighan & PJ P

    6. Paul Graham写过一篇The Root of Lisp,模拟当年John发现Lisp的过程,只有几十行代码。
    gujiaxi
        16
    gujiaxi  
    OP
       May 26, 2012
    @humiaozuzu 嗯,编程是该平衡 读 和 写 ,
    @kojp 实在是太过奖了,只是初学者而已。
    @virgil 好,尽量试试吧,看一些规模小一点的。
    @pepsin 进阶的东西还是有了足够的经验 实践了再说吧,现在在学Java,确实有点像你说的那样,现成的实现很多。
    @Livid C、Java,主要就是这两种语言。之前有涉猎过ruby,不过可能作用仅仅是建立了我面向对象的思维方式并开始学习Java吧。:P
    @sampeng 重构的话时间精力都会限制吧(主要还是懒:P),而且感觉自己的效率本身就不怎么高。至于中英文……我会注意的
    @marvinII 对于我来说这些貌似有点进阶了,记下了,谢谢。
    sampeng
        17
    sampeng  
       May 26, 2012
    @gujiaxi 重构才是让代码变好的最快的捷径。。。因为重构就类似学习过程中的巩固。不停的在思考。。你要懒就没办法了
    About     Help     Advertise     Blog     API     FAQ     Solana     3111 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 65ms UTC 11:58 PVG 19:58 LAX 04:58 JFK 07:58
    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