版本控制和协作的最佳实践
在编写代码时,版本控制软件是一个非常有用的工具。目前最流行的版本控制系统是 Git。Git 会保存代码的历史版本,允许你进行更改,并在出现灾难性错误时恢复到以前的版本。它本质上是一种备份机制。Git 还通过轻松突出差异和解决冲突来促进项目协作。
版本控制系统的重要性(例如 Git)
使用版本控制系统几乎与保存工作本身一样重要。它可以记录你的进度,备份成功的版本,并提供一个发布工作的便捷地点。让我们来看看使用 Git 进行独立和协作编码项目的优势。
协同编码
在项目上进行协作的一种传统方法是一次来回传递一个版本。在这个系统中,每个程序员基本上都'检出'代码,完成他们的工作部分,然后将其传递给下一个程序员。这种方式缓慢且低效。如果两个人意外地同时处理同一个文件,也会导致问题,产生同一代码的两个不同版本。
更好的解决方案是使用像 Git 这样的版本控制系统。使用 Git,多个程序员可以同时处理代码。当他们将代码更改推送到主仓库时,有一个简单的流程用于合并代码的不同部分,确保所有内容能一起工作。一旦合并,新更新的代码就可以免费提供给每个访问存储库的人。这允许每个程序员使用最新版本的代码。
Git 还提供了一个简单的方法来启动代码审查过程。
独立编码
当你是项目中唯一的工作者时,为了简单起见,你可能会忍不住跳过使用 Git。然而,有几个令人信服的理由将 Git 作为工作流程的一部分,即使是独立项目。
在独立项目中使用 Git 的最令人信服的原因之一是,如果代码停止按预期执行,保留恢复到早期版本的能力。例如,假设你将新的分析添加到创建的推荐系统中。分析似乎工作得很好,但突然原来的推荐系统开始出现问题。很明显问题是由于新的分析,但具体出现在哪里?拥有一个没有分析的版本与新版本并排查看以跟踪问题可能很有用。
Git 还允许你轻松发布代码,以便其他人可以查看或使用它。这对于建立作品集、创建开源程序或向客户发送代码非常有用。然后,如果你出于任何原因需要更新代码,很容易推送新版本。
设置和管理存储库
如果你在一个团队中工作,你可能会对一个已经建立的存储库做出贡献。但是,你可能需要自己启动一个存储库。幸运的是,像 GitHub 和 Bitbucket 这样的平台有非常用户友好的创建新存储库的说明。
一旦建立,你需要与合作者共享你的存储库,保持对拉取请求和合并的控制,并确保每个贡献者都遵循类似的提交规则。
协作工作流(分支、合并、拉取请求)
在使用 Git 时,有几个术语是很有用的。
分支 (Branch) 当创建同一代码的两个不同版本时,这被称为分支。
合并 (Merge) 合并是解决两个或多个分支之间的差异以创建代码单个版本的过程。
拉取 (Pull) 当一个程序员想要获取仓库中的一个代码版本时,他们将发出一个拉取请求。这实质上是允许下载要使用的代码版本。
推送 (Push) 当程序员将新版本的代码添加到存储库时,这称为推送新版本。
处理冲突并维护干净的提交历史
如果多个贡献者修改了同一行代码,Git 会将其标记为合并冲突。解决冲突涉及手动编辑冲突代码以协调更改,本质上是选择要保留的代码行的哪个版本。解决后,你可以提交更改并继续合并。
通过编写清晰简洁的提交消息来保持一个干净和信息丰富的提交历史。遵循一致的格式并描述每次提交的目的。这有助于跟踪随时间的变化,以便每个人都可以了解项目的历史。
代码审查和重构最佳实践
进行有效的代码审查以保证质量
代码审查是提高你的代码和编程技能的好方法。这基本上是一个同行评审,其他人将检查你的代码并提供反馈。
如果你在一个团队中工作,你可能需要定期进行强制性的代码审查。
然而,即使你独自工作,征求偶尔的代码审查以保持代码符合标准也是一个好主意。这也是学习新的做事方式和了解你可能还不熟悉的安全问题的好方法。
识别代码气味以及何时重构
你有没有打开冰箱,发现一股难闻的气味,让你开始寻找变质的东西?如果是这样,你很熟悉用气味作为坏东西的指标。同样的想法也用在代码审查中。
当然,在进行代码审查时,你并不是真的用鼻子嗅代码。但是评审人员寻找出错的指示器,这被称为代码气味。
有些问题可能只需要简单地修改一行代码就可以修复。但是,其他问题可能需要你重新考虑整个部分或整个文档。
这些较大的修复,即你更改基础代码的结构而不更改代码的功能,称为重构。例如,可以这样做来修复安全漏洞,同时保持用户体验相同。

