哪个是命名命名空间和类的最佳方式

Posted

技术标签:

【中文标题】哪个是命名命名空间和类的最佳方式【英文标题】:Which is the best way to name namespace and class 【发布时间】:2012-01-25 14:52:41 【问题描述】:

1) 具有类 "Model"

的命名空间 "Domain\Customer"
namespace MyDomain\Customer;
class Model  
class Repository  

namespace MyDomain\City;
class Model  
class Repository  

2) 具有类 "CustomerModel" 的命名空间 "MyDomain"

namespace MyDomain;
class CustomerModel  
class CustomerRepository  

namespace MyDomain;
class CityModel  
class CityRepository  

3) 具有类 "CustomerModel" 的命名空间 "MyDomain\Customer"

namespace MyDomain\Customer;
class CustomerModel  
class CustomerRepository  

namespace MyDomain\City;
class CityModel  
class CityRepository  

或者...

我们当前的环境使用 php 自动加载函数,以这种方式包含文件

$o = new MyDomain\Customer\Model.php

将加载文件

MyDomain\Customer\Model.php

实际上,在我工作的地方,我们使用示例 #1,该示例导致所有文件都被命名为 Model.php。如果不查看 Eclipse IDE 中的完整路径,就很难知道打开了什么模型。

【问题讨论】:

【参考方案1】:

类名应该表达它们所代表的内容。一个名为Model 的类听起来像是某些模型的通用类。相比之下,CustomerModel 说它是客户的模型。 客户 当您脱离上下文时也没有明确定义,但在您的特定应用程序中,含义是明确的。所以我建议选择CustomerModel

如果您只有ModelRepository 类,那么只为这两个类声明一个完整的命名空间是不好的,尤其是当您定义几个二类命名空间时。也许将模型与存储库分开?

【讨论】:

是的,将模型与存储库分开可能是个好主意,因为所有存储库类都应该实现特定于存储的逻辑。谢谢你的回答。

以上是关于哪个是命名命名空间和类的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

PHP——大话PHP设计模式——命名空间和类的自动载入

类和命名空间是啥关系

C#中类和命名空间是啥?为啥要用?啥时候用到?请高手详细说明

命名空间和类有啥区别? [关闭]

C++命名空间与缺省参数

C++命名空间与缺省参数