命名抽象类

时间:2011-05-26 14:38:12

标签: php oop

您是否认为通过为其名称添加前缀或后缀来区分抽象类和非抽象类是一种好习惯?有什么最常见的做法?

以下是我一直在考虑的一些“格式”:

  • Foo_Base
  • Foo_Abstract
  • Abstract_Foo
  • Base_Foo

使用下划线和信件无关紧要。

编辑:看起来Zend Framework使用“抽象”后缀(source)。

5 个答案:

答案 0 :(得分:4)

  

您是否认为通过为其名称添加前缀或后缀来区分抽象类和非抽象类是一种好习惯?

除非您遵循某些约定,否则我建议不要将此类型的元数据附加到您的类名。基本上它会使用其他地方提供的信息来混淆代码。对我而言,它类似于许多程序员所厌恶的hungarian notation

  

以下是我一直在考虑的一些“格式”......

如果我必须选择,我会选择AbstractFoo

根据这些PHP Coding Standard,您应该避免使用_

  

班级名称

     
      
  • 使用大写字母作为单词分隔符,对于单词的其余部分使用小写
  •   
  • 名称中的第一个字符是大写
  •   
  • 没有下划线('_')
  •   
     

<强>理由

     
      
  • 在所有不同的命名策略中,很多人发现这个是最好的折衷方案。
  •   
     

示例

class NameOneTwo

class Name

答案 1 :(得分:1)

可能没有直接引用(1)派生类......

在实际情况中,通常会有特定于域的集体名称。

但是如果没有,我通常会选择像BaseViewModel

这样的东西

答案 2 :(得分:1)

如果你计划使用命名空间,那么Foo_Abstract或Abstract_Foo是一个坏主意,因为你将使用Foo \ Abstract,它是无效的。

答案 3 :(得分:1)

我认为根据它所代表的类型命名变量/函数/类是不好的做法。 int myInt适用于编写快速示例(可能在教室环境中),但就此而言。

abstract class AbstractClass过于冗余,令人讨厌。让您的程序/代码以简洁的方式说出很多,并为自己说话。从阅读定义我知道它是一个抽象类我不应该在类的名称中提醒。关注班级参与问题的目的而不是什么类型的班级。

这是我从Clean Code

得到的东西的要点

如果您描述该项目,我可以建议一些不冗余的好名字。

答案 4 :(得分:0)

为什么你不想将一个类指定为抽象类,那么你应该在PHP中使用abstract关键字

abstract class MyClass
{
    //**
}

如果你想要一种方法来检查抽象类,比如逻辑检查,那么你应该创建一个这样的接口:

interface IAbstract
{
}

然后用它声明类

abstract class MyClass implements IAbstract
{
    //**
}

然后你可以这样检查:

if(MyClass instanceof IAbstract)
{
     //Abstract
}

这样您就不需要更改类名以适应对象类型。