- 已关闭**。此问题为opinion-based。当前不接受答案。
- 想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。
1小时前关闭。
Improve this question
在开发类库时,是否有命名文件的最佳实践?
我想它应该反映类的层次结构,我想实现类似这样的东西:
Foundation.parent.class.php // Concrete parent class (Class with common implementations)
File.abstract.class.php // Abstract class (extends Foundation)
FileLog.class.php // Child class (extends File)
所以在这个约定中:
- 仅用作另一个类的基类的具体类具有后缀parent
- 抽象类具有后缀abstract
- 子类以其扩展的类名开头
这是一个好的实现还是有更好的方法?
5条答案
按热度按时间cnjp1d6j1#
Naming conventions
文件名不应该有任何前缀的后缀-只有类名,以便可以通过
autoloader
找到它们。子类以其扩展的类名开头
从来没有。在类名中添加像Interface或Abstract这样的单词是一种常见的做法,但绝对不会添加父类的名字。
o2rvlv0m2#
有很多不同的方法来构造你的系统关于类名,自动加载,接口等,你必须记住的是,如果其他人要使用的代码,开发它,你要使它简单易学,否则开发人员将有一个很难编码它。
如上所述,有许多方法,其中之一是PSR-0,它负责处理类名、命名空间和目录结构,这是一个简单的概念,被许多大型开发人员使用,如
Zend
和许多其他人我目前正在开发一个系统,虽然它没有PSR-0结构,但仍然非常简单:
您可以访问这里的源代码,并采取浏览:https://github.com/AdminSpot/ASFramework
另外,我不确定您的约定是否适用于库,我的意思是文件名与实际代码无关,因此将类名与父类和接口组合是毫无意义的,因为您永远不会通过它扩展的类名包含文件。
如果你主要是对自动加载类依赖的解决方案感兴趣,那么我会采用PSR-0解决方案。
基本上您可以执行以下操作:
像这样构造你的类:
然后,您不需要事先包含,因为
new HTTP_Input
将自动加载以下内容:oyt4ldly3#
这个问题很难回答,因为这在很大程度上取决于你对自己的感觉。从我自己的实践来看,我只能建议使用自然的而不是技术性的名称。我几乎完全放弃了在类名中使用Interface或Abstract,放弃了使用
C
这样的简短版本。I
或A
。我甚至现在都在试图阻止这样的情况。给类一个它应得的名字;).找出某个东西是接口还是类本身是抽象的并不成问题。这在语言中已经存在了。所以额外地将其放入同一个类名中(对于父类来说这有点相同,但是你通常会自然地将子类命名为相关的)只是多余的。
最后你只需要用你的类的名字。所以找到好的名字而不是技术上的名字可能是底线。在这本书中有一个很好的章节叫做干净的代码,关于为你的类找到好的名字。
接下来,使用名称空间(或者前缀形式的伪名称空间,如果由于PHP版本的原因而无法使用它们),并将类放在子目录中,使用一个文件=一个类。
经常重构并检查您的代码;).快乐编码;)
iqxoj9l94#
我认为最好的东西是PSR-4。也是PSR-0弃用。
在我开始用PHP开发我的第一个严肃的项目之前,我已经做了大量的研究,并意识到最好的做法是遵循通用标准(PSR),当然我们是相当自由的,在某些情况下,我们可以为自己的项目弯曲一些部分。
每个PHP开发人员都必须了解PSR。
3phpmpom5#
除了使用框架之外,文件的命名没有任何规则。您可以随意命名您的文件,但是,如果您使用框架,则在尝试加载文件时可能会导致错误。
最好的实现是您在使用时感觉最好的实现。