你好,我是孔令飞。今天我们来聊聊如何设计代码的目录结构。
目录结构是一个项目的门面。很多时候,根据目录结构就能看出开发者对这门语言的掌握程度。所以,在我看来,遵循一个好的目录规范,把代码目录设计得可维护、可扩展,甚至比文档规范、Commit 规范来得更加重要。
那具体怎么组织一个好的代码目录呢?在今天这一讲,我会从 2 个维度来解答这个问题。
首先,我会介绍组织目录的一些基本原则,这些原则可以指导你去组织一个好的代码目录。然后,我会向你介绍一些具体的、优秀的目录结构。你可以通过学习它们,提炼总结出你自己的目录结构设计方法,或者你也可以直接用它们作为你的目录结构规范,也就是说结构即规范。
如何规范目录?
想设计好一个目录结构,我们首先要知道一个好的目录长什么样,也就是目录规范中包含哪些内容。
目录规范,通常是指我们的项目由哪些目录组成,每个目录下存放什么文件、实现什么功能,以及各个目录间的依赖关系是什么等。在我看来,一个好的目录结构至少要满足以下几个要求:
命名清晰:目录命名要清晰、简洁,不要太长,也不要太短,目录名要能清晰地表达出该目录实现的功能,并且目录名最好用单数。一方面是因为单数足以说明这个目录的功能,另一方面可以统一规范,避免单复混用的情况。
功能明确:一个目录所要实现的功能应该是明确的、并且在整个项目目录中具有很高的辨识度。也就是说,当需要新增一个功能时,我们能够非常清楚地知道把这个功能放在哪个目录下。
全面性:目录结构应该尽可能全面地包含研发过程中需要的功能,例如文档、脚本、源码管理、API 实现、工具、第三方包、测试、编译产物等。
可预测性:项目规模一定是从小到大的,所以一个好的目录结构应该能够在项目变大时,仍然保持之前的目录结构。
可扩展性:每个目录下存放了同类的功能,在项目变大时,这些目录应该可以存放更多同类功能。举个例子,有如下目录结构: