当前位置: 首页 > 科技观察

为什么开源可以提高程序员的编程能力?

时间:2023-03-14 11:55:44 科技观察

我已经写了很多年的软件。我最近意识到,我越多地参与(致力于、结合等)开源技术,我就能写出越好的代码。这让我不禁要问:这其中有没有相关或因果关系?阅读代码让你变得更好我在编程生涯的早期就了解到,我阅读的代码越多,我的代码就越好。我知道当我必须维护其他人的代码时,简单而干净的代码几乎总是比花哨或复杂的代码要好——即使有注释。另一方面,当我花足够多的时间来理解复杂的代码时,我常常可以学到新的技巧。不管怎样,它能让我进步。这让我在那些没有codereview的地方一次又一次的挣扎。当没有足够的时间正式执行“代码审查”时,我会浏览存储库并自己阅读代码。当然,那时候我仅限于从一个小团队获取公司资源。超越语法当您不得不与任何编程语言的语法搏斗时,这是学习如何充分利用该语言的最微不足道的时刻。一种语言的语法往往是非常静态的,如果你犯了错误,你的编译器会向你抱怨。更深入的课程涉及哪种语言最适合哪种问题(“适合工作的正确工具”),以及如何使用该语言编写代码以使其高效和可维护。学习一门新语言的方法有很多种:课程、教程、导师、书籍等等。我通常结合这些选项来学习一门新语言。我注意到,当涉及到非语法元素时,这些方法通常非常相似。通过阅读其他人实际部署的代码,您会收获更多。不仅仅是常规的结构化学习,您还需要学习模型和实用方法。语言所谓的“正确”做事方式并不总是最有效的方式。您将体验边缘案例、一次性交易和意想不到的集成。您还会找到这些问题的解决方案,无论好坏,但如果您认真思考,这就是“推荐做法”的用武之地。今天的模式就是明天的反模式。您可能对诸如“始终注释”、“***中的逗号”、“缩进x空格”之类的事情有自己的想法,当然您是对的。我对编码的这些和其他方面也有自己的感受。有时候,当我阅读别人的代码时,如果我看到他们做错了什么,我会很生气。但是随着代码看多了,我开始明白,总有一些情况在别人的代码中很常见,而在自己的代码中却从来没有遇到过,我的方法也不必那么固执。我不仅改变了一些观点,而且学会了更加灵活。开源无处不在随着开源运动的发展,可供阅读和学习的代码量也在增加。Gitlab、GitHub和BitBucket等站点使我们能够获得功能齐全的应用程序,这些应用程序不仅可以阅读代码,还可以玩代码。我想学习的东西很少是开源的。我以前通过关注目录结构和命名约定等简单的东西来学习新的编程语言。但是,就目前而言,我会找到几个不同的开源项目,然后我可以开始拼凑通用方法。我以前很少强调这些东西。有这么多可用的代码,但质量参差不齐。当我们想要学习的时候,我们常常不知道哪个好哪个不好。然后一直看代码,慢慢就会学会区分了。阅读“糟糕”的代码可以帮助你理解它为什么“糟糕”。关键是不要害怕尝试任何你认为正确的事情,当你误入歧途时能够承认错误,改正问题并继续前进。糟糕的代码是糟糕的,对吧?有人会说“坏代码比好代码更明显”。sub-reddit专用于不良代码。这些年来,我写过很多好代码和坏代码。当我看到我以前写的代码时,我最好的想法是我怎么会写出这样的垃圾代码。这实际上意味着我还在学习。如果我查看我的旧代码并认为它??看起来很棒,那么我就没有改进。那么,我们如何从糟糕的代码中学习呢?您对错误代码的了解越多,您发现错误代码的能力就越好。当您研究和搜索示例时,您会发现并使用大量不起作用的代码。请记住,仅仅因为它不适用于您的情况并不意味着它就是糟糕的代码。学习如何让它发挥作用会让你成为一个更好的人。你怎么知道这是坏代码?人们喜欢批评。阅读评论,如果您看到很多“WTF”,那么您看到的可能是糟糕的代码,请尝试找出它糟糕的原因。不要只留下“这段代码糟透了”的评论。不要表现得好像你知道糟糕代码的所有要求,要知道总是有一个有效的理由来编写它。如果您知道为什么它是糟糕的代码,那么不妨留下建设性的评论。或者......让它成为好的代码并提出一个使代码更好的拉取请求。修复语法、使用更好的方法、添加注释或修改缩进:这些都是改进代码的好方法。添加对您建议更改代码的原因的解释。我发现当我帮助别人学习时,我学到了更多。如果我认为我理解了一个新主题,我会找人尝试向他解释,这有助于我更深入地理解和记住它,并让我快速发现我是否编写了糟糕的代码。回馈请记住,只有您参与其中,开源才能发挥最佳作用。大多数项目都欢迎代码更改,但是有很多方法可以做出贡献。测试开源代码并提交错误报告;帮助文档集;编写教程和操作示例;加入对话——或者只是帮助传播信息。凡事都能有所作为,参与的人越多越好!资源这里有一些链接可以帮助您入门。有些我自己用过,有些我还没来得及深究。如果您在本文中发现有用的内容或需要更正的内容,请随时与我们分享。DinoDateLiveSQLOpenSourceSocietyUniversityFreeCodeCampopensource.comGitLab入门GitHub指南moodle.orgPL/SQL挑战