为什么阅读开源代码可以提高程序员的编程技能?
2016-06-20 13:22:06  By: dwtedx

我已经写了很多年的软件、最近我意识到、我越涉及(致力于、结合于等)开源技术、我写出来的代码就更好、这不由地让我疑惑起来、难道里面有什么相关性或因果关系吗?


一、阅读代码能让你变得更优秀

我在编程生涯的早期就明白我阅读的代码越多、我的代码就能变得更好、我知道、当我不得不维护其他人的代码时、简单和干净的代码几乎总是比花哨或复杂的代码好—— 即使有注释、然而另一方面、当我花足够的时间去理解复杂代码的时候、我常常能够学到新的技巧、不论怎么样、都能让我有所提高

这使得我在那些没有代码审查的地方一再争取、而当没有足够的时间来正式执行“代码审查”的时候、我会自己浏览存储库和阅读代码、当然、那时我还被受限于来自于小团队的公司资源


二、超越语法

在你不得不全力对付任意编程语言的语法时、也就是学习如何充分利用该语言最琐碎的时刻、一门语言的语法往往是非常静态的、并且如果你出错了、你的编译器会向你控诉、更深层次的课程涉及到什么语言最适合解决什么样的问题(“合适的工具做合适的工作”)、以及如何用那种语言编写代码以便于使它高效和可维护

学习新语言有许多方法:课程、教程、导师、书籍以及等等、我通常会结合这些选项来学习一门新的语言、我注意到、当涉及到非语法元素的时候、这些方法常常非常相似

开源代码


阅读来自于其他人的实际部署代码会让你收获更多、不仅仅是常规的结构化学习、你还需要学习模式和实践方法、语言中所谓“正确”的做事方式并不总是效果最佳的方式、你会经历边缘情况、一次性事务以及意想不到的集成、你也会找到这些问题的解决方案、有好有坏、但如果你认真思考的话、那么这正是出来“推荐做法”的地方、今天的模式就是就是明天的反面模式


你可能对有些事情、例如“总是注释”、“逗号放到最后”、“缩进x个空格”有着自己的想法、当然你是对的、我对提到的这些及编码的其他方面也有着自己的感受

有时候当我阅读其他人的代码时、如果看到他们做错了、我会生气、但是随着我代码阅读量的增加、我开始懂得、总会有一些情形常见于别人的代码、但我在我自己的代码中却未曾遇到过的、并且我的方法没有必要那样执拗、我不仅改变了我的一些观点、而且懂得更加灵活


三、开源无处不在

随着开源运动的发展、可供阅读和学习的代码数量也大幅度增长、例如Gitlab、GitHub和到BitBucket这些网站就允许我们获取全功能的应用程序、不仅可以阅读代码、还可以摆弄、很少有我想要学习的东西是不能在开源代码中获取的

我以前学习新的编程语言、会把重点放在诸如目录结构和命名约定这些简单的事情上、但是、现在、我会找一些不同的开源项目、然后可以开始拼凑常用的方法、我很少强调以前那些类型的东西了


可用的代码是如此之多、但质量却良莠不齐、当我们想要学习的时候、常常搞不清楚哪个好哪个不好、那就保持阅读代码吧、慢慢地你会学会如何区分、阅读“坏”的代码可以帮助你理解为什么它是“坏”的、关键是不要害怕尝试任何你觉得看上去正确的东西、并且当你走错路的时候能够承认错误、并改正问题、然后继续前行


四、坏的代码就坏的、是这样的吗?

有人会说“坏的代码比好的代码要更多更明显”、sub-reddit致力于坏的代码、在这些年里、我写了很多好的代码和坏的代码、当我看到我以前写的代码时、我的第一想法就是我怎么会写这样的垃圾代码、这实际上意味着我还在学习中、如果我看到我以前的代码、觉得它看上去非常伟大、那么说明我并没有提高


那么、我们怎么才能从坏的代码中学到东西呢?你阅读的坏代码越多、那么你就越擅长发现坏的代码、当你在学习和搜索例子的时候、你会发现和使用大量不能工作的代码、请记住、仅仅因为它不适合你的情况、并不能说明它就是坏的代码、学习如何让它工作能够使得你变得更优秀


五、你怎么知道它是坏的代码?

人们喜欢批评、阅读评论、如果你看到很多“WTF(什么玩意)”、那么可能你看到的正是坏的代码、试着指出为什么不好的原因、不要只留下“这代码真烂”这样的评论、不要装得你好像懂得坏代码的所有需求、要知道、总有一个它之所以被这样写的正当理由、如果你知道它为什么是坏代码的原因、那么不妨留下一个有建设性的评论、或者……


六、让它变成好的代码

放一个能让代码变得更好的pull请求、修正语法、使用更好的方法、添加注释或修改缩进:这些都是改进代码的伟大方式、加一个为什么你推荐改变代码的解释、我发现当我帮助别人学习的时候能学到更多、如果我认为我理解了一个新的主题、那么我会找个人来试着向他解释、这能让我更深刻地理解和记住它、并且让我快速发现我是否写了坏的代码


七、回报

记住开放源代码在你参与进去的时候效果最佳、代码更改在大多数项目中都是受欢迎的、但是有很多出力的方法、测试开源代码和文件错误报告;帮助完成文档集;写教程和如何做的例子、参加对话——或者仅仅只是帮助传播、每一件事都能带来改变、并且越多的人参与进来越好


若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新资讯、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


博文评论

    • dwtedx 2016-06-21 21:09:04   2 评  | 回复

      @er:其实相比之后我还是很注重用户体验的、没有投放对联弹窗之类的流氓广告、为了博客的运营、还多多体谅哦


    • er 2016-06-21 16:55:10   1 评  | 回复

      你的博客广告好多啊


DD记账
top
+