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

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


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

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

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

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

另外。。不要中文里面含英文单词。。其实这是很不好的习惯。。。
marvinII
2012-05-26 04:56:26 +08:00
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
2012-05-26 09:19:41 +08:00
@humiaozuzu 嗯,编程是该平衡 读 和 写 ,
@kojp 实在是太过奖了,只是初学者而已。
@virgil 好,尽量试试吧,看一些规模小一点的。
@pepsin 进阶的东西还是有了足够的经验 实践了再说吧,现在在学Java,确实有点像你说的那样,现成的实现很多。
@Livid C、Java,主要就是这两种语言。之前有涉猎过ruby,不过可能作用仅仅是建立了我面向对象的思维方式并开始学习Java吧。:P
@sampeng 重构的话时间精力都会限制吧(主要还是懒:P),而且感觉自己的效率本身就不怎么高。至于中英文……我会注意的
@marvinII 对于我来说这些貌似有点进阶了,记下了,谢谢。
sampeng
2012-05-26 09:53:11 +08:00
@gujiaxi 重构才是让代码变好的最快的捷径。。。因为重构就类似学习过程中的巩固。不停的在思考。。你要懒就没办法了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/37355

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX