php - 我应该如何组织通用编程库的目录结构?

标签 php organization

一段时间以来,我一直在编写自己的通用 PHP 库,正在考虑如何组织目录结构,但我想在正式确定库的目录结构之前获得人们的想法。

这是我目前所拥有的: https://github.com/homer6/altumo/tree/master/source/php

我想我可以“按主题”或“按类别”进行。到目前为止,我只能想到一个我喜欢的“按类别”示例:Boost http://www.boost.org/doc/libs/1_46_1/?view=categorized

另外,Qt 是按模块组织的,但我认为这有点困惑,因为一切都被塞进了 QtCore http://qt-project.org/doc/qt-5/qtmodules.html

有什么想法吗?

提前致谢。

更新: 我发现了一本非常棒的书,它向我展示了许多值得遵循的优秀图书馆设计惯例:http://www.apibook.com/blog/

更新: 我发现了一篇有趣的文章,其中提到了代码组织 (http://highscalability.com/blog/2012/3/26/7-years-of-youtube-scalability-lessons-in-30-minutes.html)。在底部,它说: “你的代码树会是什么样子?他想要用这些词来描述它:简单、实用、优雅、正交、可组合。这是一个理想,现实有点不同。”

最佳答案

首先,所选择的结构是一个折衷的决定,这意味着您必须根据您的目的处理某些方面并优先考虑其他方面。您可以遵循一些分组标准,例如:

  • Functional Cohesion,我认为这应该是您设计中最强的一个。具有相同或相似功能的类/文件/资源​​应该放在一起
  • 组件层次结构,根据您选择的粒度级别,这意味着如果您更喜欢细粒度组件而不是粗粒度组件,您将在一个文件夹中拥有更多或更少的文件/资源​​。这可以使用文件夹层次结构和嵌套来控制。
  • 更改,有些文件比其他文件更容易更改,您必须牢记这一点,以便根据更改的概率提供文件夹层次结构修改。
  • 可扩展性,要使框架有用并适应几乎任何场景,您必须提供扩展组件和功能的可能性。为扩展(又名插件)添加一个文件夹是个好主意。

您应该使用很多标准,但请始终牢记 KISS Principle .你可以在The Unified Software Development Process之类的书里搜索包管理 (Ivar Jacobson 等人),我希望这会有所帮助。

关于php - 我应该如何组织通用编程库的目录结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5997730/

相关文章:

php - php 区分管理员和用户

css - 组织 CSS 代码的结构化方式

java - Java 项目的默认目录布局

python - 如何构建我的 Python 项目以允许从子目录导入命名模块

php - 这足以进行 CSRF 保护吗?

php - 我遇到错误 "InvalidArgumentException Trailing data "

java - Android通过html和php上传文件到网站

php - 独特的分拣场景

java - Java 中具有子类和变量的高效类组织

java - 为 Game of Nim 组织/创建类(class)时出现问题