在新的代码库中入门
无论是为开源贡献,还是开始一份新工作,第一步都是熟悉代码库,而这或许会让人望而生畏。以下是一些帮助你快速上手的小技巧。
1. 不要惊慌
即使代码库的一切对你来说都是新的,第一步总是相同的。
在您的计算机上制作该应用程序的本地副本。
2. 尝试在本地运行
这一次,尤达错了——这一步需要“尝试”和“执行”。如果你无法根据现有信息启动项目,你可以在下一位开发人员入职之前,立即帮助缓解问题。而且,无论结果如何,你仍然可以继续执行第 3 步和第 4 步。
理想情况下,应用程序的根目录中应该有一个名为的文件README
。该文件应该包含项目的详细信息以及如何运行代码库的说明。如果您使用 GitHub 并访问其代码库页面,则该文件会显示在文件目录后面。
如果没有 README 或文档,请尝试查找运行脚本。清单文件是一个很好的起点。例如,在使用Node.js、npm或yarn 的应用程序中,清单文件名为package.json
。除了项目的元数据外,该文件可能还包含一个脚本部分。
"scripts": {
"build": "next build",
"start": "next build && start",
"test": "jest --watchAll --verbose"
}
这些脚本在终端中使用包管理器运行,如npm run start
或yarn run test
。
如果清单文件不存在或没有运行脚本,请尝试执行名为“index”或与目录或项目同名的最外层文件。如果您导航到文件所在的目录,则可以在终端中执行文件,例如./index.js
。
理想情况下,像这样的项目也应该有一个帮助标志。执行时./index.js --help
可能会打印出一些有用的说明,包括你可以使用的命令列表。
如果您使用的是 Mac 或 Linux,也可以尝试man <command>
。这将打印出该命令的用户手册。如果存在,它将包含比--help
标志位更多的信息。如果不存在,您将看到“没有手册条目<command>
”。运行man ./index.js
只会打印文件本身。如果您使用的是 Windows,则必须使用包,例如groff。您甚至可能希望在 macOS 或 Linux 上使用 groff ——它会在浏览器中显示手册,而不是在终端中。
3.查找文档
项目之外可能存在面向开发人员的文档。它可能位于 GitHub 代码库 Wiki、公司自有的文档网站,或者你入职第一天收到的 Google 文档中。尽快访问已部署的环境。你将通过测试数据和实际工作版本学到很多东西。
你也能从用户文档或公司内其他团队的文档中找到价值。我曾多次从用户手册中了解到某个功能或使用某个功能的新方法。这些文档的技术性也较低,所以当你已经吸收了大量信息时,更容易理解。
项目文档还有许多其他方式,人们通常不认为它们是文档。这对于那些不幸不重视文档的公司来说可能很有帮助。例如,测试通常用一句话描述功能。它们通常描述了应用程序应该做什么以及不应该做什么。
即使项目中没有任何开发人员曾经写过描述性的提交信息,git 和 GitHub 仍然会提供有用的文档。检查分支,了解是否有分支命名约定。阅读旧的拉取请求,了解代码审查流程。git git log
blame可以让你了解功能和修复的时间表。
无论团队使用 GitHub Issues、JIRA 还是其他工作跟踪系统,我都强烈建议在投诉之前先搜索一下是否存在工单。工单还能让你更好地了解团队目标、用户投诉、瓶颈和流程。
4. 与人交谈
询问开发人员在刚开始的时候希望了解哪些内容。询问他们认为哪些工具(例如浏览器扩展、编辑器插件、状态检查器等)对这个项目有用。
请求与其他开发人员结对工作,或者在遇到第一个障碍时立即提出请求。如果向他人寻求代码方面的帮助让你感到紧张,可以参考Virtual Coffee 的代码提问指南。
如果你听说有 bug 需要修复,可以问问负责修复的开发人员他们首先检查了哪些内容。这样你就能找到有用的日志在哪里,以及应用程序的哪些部分最不稳定。
安排与非开发人员团队成员的会议。产品经理可以告诉你项目的总体目标。产品负责人可以告诉你短期内的优先事项。QA 可以告诉你哪些地方存在问题,哪些类型的 bug 需要优先处理,以及是否需要修复某些问题以帮助他们发现更多 bug。
如果您从事开源工作,请加入任何与该项目相关的社区。倾听维护者、其他贡献者以及社区论坛的意见,可以帮您了解应用的哪些部分需要更多改进。
5.了解业务
有了上下文,理解代码就会容易得多。尤其是在变量名方面。了解常见的行业术语和缩写词对你很有帮助。
了解行业似乎超出了你的职责范围。然而,如果你听说直接竞争对手刚刚开始提供一项服务,并且知道如何将其应用到你的产品中,这对你的老板来说无疑是一个巨大的优势。在医疗保健等监管严格的行业,一些行业知识可以帮助你及早发现产品设计中的漏洞。这可以为公司节省一大笔钱,而且当你去其他地方谈加薪或面试时,也会给你留下好印象。
至少,它将更容易理解会议并预测极端情况。
6.心智模型
概念化任何应用程序的一个好方法是创建一些高级的心理模型。
我非常喜欢为应用程序绘制流程图和图表。像miro和whimsical这样的工具让这一切变得简单易用,易于分享。这些流程图可以简单到只是组件或文件树状图,以及它们之间的关系。遵循数据流的流程图非常有用,尤其是在涉及集成、微服务或发布/订阅等功能时。
你不必仅仅通过绘图来创建这些思维模型。通常的做法是写出每个 API 端点的功能,包括请求和响应结构。
我推荐使用手动方法创建这些图表和文档有几个原因。您可能没有或无法获得将代码输入代码可视化工具或人工智能的权限。您可能不具备必要的知识来识别该工具是否输出了错误的信息。最后,手动重新组织迄今为止学到的所有信息与阅读工具生成的摘要是不同的学习方式。自己将所有信息置于上下文中,可以增加这些信息进入长期记忆的机会。
完成后,请询问更熟悉该项目的开发人员是否有遗漏任何内容。
7.打破它
遇到一个难以理解的长函数?删除一行。看看会发生什么。重复。
无法跟踪数据流?在调试器中使用断点。
给应用程序输入错误数据。我敢打赌你肯定输不出来。
删除传递给组件的一些道具只是为了看看会弹出什么错误。
阅读您创建的混乱日志。
如果您之前曾看到过应用程序以这种方式崩溃,那么当出现错误时,就可以更轻松地缩小应用程序崩溃部分的范围。
8.修复它
即使是资深开发人员也必须适应新代码库中的流程。只需修复一个拼写错误,就能让你观察团队从创建工单到部署的整个流程。
9. 给它时间
学习代码库感觉很紧迫,但你不可能一下子学会所有东西。每提交一个 PR,你都会学到一点东西,所以给自己一些时间和宽限。通常的预期是六个月才能完成,所以如果你的代码能在那之前合并,那你就做得很好了。
结论
如果我错过了您最喜欢的学习新代码库的技巧,请在评论中告诉我们!
鏂囩珷鏉ユ簮锛�https://dev.to/abbeyperini/getting-started-in-a-new-codebase-e7b