2012-11-26 36 views
10

抽象类应该总是以Abstract作为前缀,后缀为Interface(当它是一个接口时)?是否有任何标准的命名约定,类似于文件夹结构/命名空间的PSR-0,但是对于类?关于抽象类和接口的PHP命名约定

回答

9

对此没有约定;特别是在PHP中。不管你愿意,这都可以组织起来。

在PHP 5.3中增加了namespaces,我不认为需要在实际的类名称中添加AbstractInterface前缀/后缀。

只是因为它们的名字!

+0

值得指出的是,如果你想遵守法律规定的PSR,它规定你必须包含'Interface'作为接口的足够。 http://www.php-fig.org/bylaws/psr-naming-conventions/ – wired00

8

虽然没有任何约定,但我认为对各个组件使用Abstract前缀和Interface后缀是一种很好的做法。 IMO有助于更好地理解代码。

1

约定就是你所看到的:语言本身不强制任何约定,除非那些使解析器能够读取你的代码的约定。基本上,您应该为您的项目设置自己的约定,或者更好地为所有项目设置约定。然而,在不同人的团队中工作可能会导致不遵循约定,这实际上取决于程序员。

根据我的经验,我会建议遵循“按合同设计”之类的内容。为你的实现类命名你的契约(接口),然后为你的实现指定一个更具体的名字(或者回退到MyContractNameImpl,我主要从Java中知道)。此外,许多现代IDE都知道你的类是一个接口还是抽象的,所以真的不需要把它放在它的名字中。同样的原因,我还发现名为“IMyContract”的合同不太好。

1

命名的抽象类和接口的使用:

  • 摘要*
  • *接口

将让你的代码库干净,美观,明显给您的团队有什么原型,是什么是合同,具体实施是什么。

命名约定在这里可以提高我们在任何情况下的生产力,所以“按你喜欢的名字”远非好主意。

尽管FIG组并未提出抽象类和接口的命名约定 - 如果您检查主要的开源PHP项目,您会发现几乎所有这些项目都使用此约定。