《编程匠艺》读书笔记之十五
第十八章 安全措施——源代码控制和自我控制
- 代码非常宝贵,要以尊重和谨慎的态度来对待它。
- 作为尽责的软件匠人,我们必须对我们的工作承担责任,我们不仅需要编写高质量的代码,还必须确保我们的工作:1. 安全可靠;2. 可访问;3. 可复制;4. 可维护。
- 对于软件开发来说,源代码控制是一种必不可少的工具。它对团队的安全合作至关重要。
- 糟糕的源代码管理可能会与源代码控制结合在一起,产生令人头疼的开发问题。
源代码控制一般采取以下两种机制之一: - 严格锁定。利用文件预留机制,从物理上防止多个用户同时编辑同一个文件。
- 乐观锁定。允许多个用户同事编辑同一个文件,这些系统没有预留机制,在签入文件时,会合并所有的更改,合并通常是自动进行的。在偶然的情况下,会有冲突发生,这时需要开发人员手动合并。
- 源代码控制系统不仅仅保证了每个文件都是最新的版本,代码库还记录了每次签入之间的区别,这是一种非常强大的工具:任何变更都可以被完整的保留下来。
- 好的源代码控制工具不仅记录了文件的版本,还记录了目录的版本,这样我们可以跟踪对文件结构所做的修改,包括文件的创建、删除、移动和重命名等。
- 源代码库可以保存在本地的计算机上,也可以保存在通过网络连接访问的远程计算机上。
- 设立一名专职的源代码控制管理员非常重要。
- 在版本受到控制的代码库中,有两种方式来开发代码:1. 小修改高频次签入;2. 大修改低频次签入。推荐使用小修改高频次签入的方式,这样代码库标签可以标出每个重要的关键点。
- 在签入代码之前,首先要对你的代码进行全面的测试,不要签入任何会破坏构建,或使自动单元测试失败的东西。如果是因为你的错误而使整个团队陷入僵局,那么你将成为众矢之的。
源代码控制工具的一个最强大的功能就是创建分支:一种使用多个平行的工作流可以同事处理一个文件或一组文件的机制。分支具有很多用途,例如: - 同时向代码库添加多个功能。
- 在不破坏主代码的情况下,为开发人员提供签入那些可能有些破坏性的工作的私人工作空间。
- 在处理新软件版本的同时,维护旧有软件版本。
- 分支在代码库中创建了平行文件修订的树形结构,这种结构至少有一个主线代码开发,称为“主干”。
- 一个分支上的工作进展可以与另一个分支上的工作进展合并,也可以合并回主干。
- 即使你不需要在代码库中同事开发多个功能,分支在这种单一的开发过程中也十分有用,这种方案可以保证主干的版本非常稳定,因为总是有一个完整的、经过测试的产品。
- 目前有许多不同的源代码控制系统,既有开放式的,也有版权许可式的,在很多情况下,源代码控制系统的选择都是根据公司的惯例作出的。
- 所有的版本控制系统的鼻祖都是SCCS(Source Code Control System),这个系统是在1972年由贝尔实验室开发的
- 源代码控制:是一种管理我们所编写的代码文件的机制,它维护着文件和它们的目录结构,并且控制着对代码的并发访问和修改。
- 版本控制:也称为“修订控制”或“变更控制”,是一种源代码控制系统,用于记录你对文件所做的修改,它允许你检查、检索并比较文件在整个开发历史中的任何版本。
- 配置管理:基于版本控制,它提供了一个可靠的环境,在这里软件开发可以得到细致的管理,软件爱你开发过程也得到了实施。
- 配置管理建立在源代码控制的基础上,在项目的整个生命周期中对软件开发进行管理,它包含了源代码控制,并且使用时新增了一种开发过程。
- 软件配置管理的正式定义:在不同的点及时确定系统的配置,目的是系统的控制对配置的变更,并在整个系统生命周期中维护配置的完整性和可追溯性。
- 备份你的工作,不要在你想出某种恢复策略之前,干等着灾难的来临。
- 不要依赖于手动的备份计划,虽然每个人都知道他应该俺是对自己的工作进行备份,但是仅仅因为做某件事是合理的和明智的,并不意味着我们就一定会去做。
- 确保将所有的重要文件都放在一个不断备份的文件系统中。
- 不要忘记墨菲定律:凡是可能出错的事,准会出错。
- 如果你想公布一些源代码,要确定代码全部都是你自己编写的,或者你必须对所有不是你编写的代码拥有处置权。
- 要警惕以为的源代码泄露:预防对你的可执行程序进行简单逆向工程。从一个已经发布的二进制文件重新构建源代码,在某些情况下是可能的。
- 关键的事情不是你编写了多少代码,而是你编写代码的方式。
- 优秀的程序员:1. 为自己的工作负责,知道如何保护代码开发;2. 谨慎的使用源代码控制,确保代码库总是保持一种一致和可以使用的状态;3. 永远不会将有破坏性的代码签入源代码控制系统;4. 在使用所有工具时都非常细致,希望创作出可维护、可访问的代码。
- 糟糕的程序员:1. 等待着灾难的来临,而不去考虑自己代码的安全性和可访问性;2. 认为总有其他人会为他们考虑备份和安全性;3. 不关心更新文档的问题;4. 不考虑他们的代码在代码库中的状态——他们签入有破坏性的代码,并留下一个烂摊子等别人来清理。
作者:李潘
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。