别让庞大的代码库吓到你!解读他人代码的技巧和工具
每个开发者在人生中都会经历这样的时刻:开始一份新工作、加入一个开发团队,或者决定为一个开源项目做贡献,面对一个全新、庞大、陌生的代码库,还要修复一些 bug。代码库的规模之大,你或许从未见过,但别担心,我将分享一些技巧和工具,教你如何在不抓狂的情况下理解别人的代码。
-
你不需要知道一切🤯
这对我来说是一个转折点,让我意识到我根本无法理解所有的东西。很多初级工程师都雄心勃勃,想要读完所有的东西。这种精神很好;但是,你根本做不到,就是这样。重要的是要确定哪些代码是你想理解的,哪些代码是需要跳过的。
-
阅读文档📖
我开始新项目时,首先会阅读所有可用的文档或 README 文件。这能让我熟悉代码库的设置、功能、代码风格和其他重要部分。有些文档可能已经过时,但了解代码的演变也有助于理解项目的历史。遗憾的是,有时文档并不完整,甚至可能存在错误。
-
使用命令行搜索工具🔍
初次深入研究包含数千行代码的代码库时,想要立即见效并非易事。但我在如此多的代码中找到出路的秘密武器是像
grep
和 这样的命令行搜索工具ack
。搜索唯一的字符串或关键字是查找功能所在位置的绝佳方法,无需跳转到文本编辑器。我将演示如何使用这种便捷的方法立即找到修复错误所需的文件。实用小贴士
我最近开始为 DEV 源代码做贡献,并强烈建议大家也这样做。它拥有相当庞大的代码库,维护人员也非常热情。我相信这是一个非常适合初级开发者为开源项目做贡献并将知识付诸实践的地方。
我发现了一个 bug 并报告了这个问题,我想尝试自己修复它。考虑到 DEV 的后端是用 Ruby 开发的,Ruby
而我并不是 Ruby 开发人员,但我需要修复的是返回给浏览器的 HTML 代码。我完全不知道需要查看哪个文件,也不知道这个函数在哪里。Grep
我打开了开发工具,发现
<div>
有问题的元素有一个类名ltag__twitter-tweet__video
。运行这个字符串,grep
我发现需要查看三个文件:
$ grep -iRl "ltag__twitter-tweet__video" app/
app/assets/stylesheets/ltags/TweetTag.scss
app/views/liquids/_tweet.html.erb
app/liquid_tags/tweet_tag.rb
很酷吧?使用 grep 的一个好处grep
是,它几乎可以在你使用的任何 'nix 发行版上使用。它在许多不同的环境中都表现出色。想了解更多关于 grep 的信息,请务必阅读这篇文章。
确认
Ack是一款“类似 grep 的工具,但针对程序员进行了优化”。它默认会以递归方式搜索(即你的项目),同时忽略 .git 等 VCS 目录,并提供便捷的工具,帮助你以更少的按键次数探索代码。
以同样的 grep 示例为例,以下是搜索“ltag_ twitter-tweet _video”的方法:
$ ack "ltag__twitter-tweet__video" app/
app/assets/stylesheets/ltags/TweetTag.scss
44: .ltag__twitter-tweet__video{
app/views/liquids/_tweet.html.erb
9: <div class='ltag__twitter-tweet__video'>
app/liquid_tags/tweet_tag.rb
30: el.getElementsByClassName("ltag__twitter-tweet__video")[0] .style.display = "block";
Ack 是我最信赖的搜索工具,我认为用它来替代 grep 会非常有价值。我强烈建议学习如何使用 ack。不妨阅读这篇文章了解更多信息。
-
问问!🙋
最后,如果你还是遇到困难……那就问吧!在项目初期,了解项目的一个好方法是与团队中更熟悉代码库的开发人员结对。这个人可以提供与项目相关的特定设计模式、测试、流程和第三方代码的深度见解。他们还可以提供更多关于项目的历史背景,以及最初做出某些选择的原因。
这些就是我的小贴士!希望这些能帮助你克服不熟悉代码的难题。请不要紧张。深呼吸,记住这些,你就能搞定!
你有什么小贴士?我也想听听你的小窍门。
关于我
我是一名全栈 Web 开发人员,也是Bits n Bytes Dev Team的联合创始人,该团队由一小群才华横溢的专业自由开发人员组成,我们根据尖端技术提供定制的 Web 应用程序开发服务,以满足客户独特的业务需求。
我可以受雇,您可以访问我的投资组合网站https://www.bitsnbytes.ir/portfolio或通过raadi@bitsnbytes.ir与我联系。
文章来源:https://dev.to/mjraadi/don-t-let-that-huge-codebase-scare-you-tips-and-tools-to-make-sense-of-other-people-s-code-3lgb