想问问各位的 PHP 命名习惯

2016-09-28 14:17:46 +08:00
 lml12377

比如最简单的创建对象, new UserModel(),变量名可能会是:

本人一般是第三种,但是这样有时候变量名会变得很长。。。

类似的喜欢在复数后面加类型,比如 ItemCollection 里面有 Item 对象的数组 private 属性,一般我会这样写:

private $_itemInstanceArray = [];
private $_itemInstanceArr = [];

但是很多人其实会这样:

private $_items = [];

还有一种比较小众的(可能并不是那么小众):

private $_itemList = [];

复数的写法在遇到去 y 加 ies 的时候很别扭(还有复数和单数一样的),另外 items 也不好一眼看出变量类型以及里面装的内容的类型。

另外,引申一个,文件夹的命名,比如最常见的 assets ,里面的文件夹很可能会是这样: images / css / js ,为啥这个 image 复数了其它都是单数,个人觉得命名这东西贵在统一,但是 js 改成 scripts , css 却不好改。。。干脆都改成单数?

类似的文件夹还有:

Controllers / Services / Models / Views / configs
Controller / Service / Model / View / config

见过一些生产的项目,真实情况往往是这样:

Controller / Service / Models / Views / config

又是个值得纠结的问题。。。不知道大家都是怎么命名的?

2801 次点击
所在节点    程序员
24 条回复
feiyuanqiu
2016-09-28 17:21:44 +08:00
就像上面楼说的,尽量遵循正在使用的框架的代码风格,一致性很重要

『 AliasRegistry ,但实现就比较奇怪了,比如 SimpleAliasRegistry 』
这个没什么奇怪的吧,接口处于类型层次的高层,它是对概念抽象,相应地它的命名就比较泛化,实现在命名上比它的接口更具体是理所当然的

为什么一般不建议接口名称里加上 Interface 后缀呢,因为啰嗦。『 clean code 』里是这么解释的,『我不想让用户知道我给他们的是接口,我就想让他们知道那是个 ShapeFactory 』
对接口的使用者而言,他只需要知道使用这个对象能实现他需要的功能就行了,在类型名称上加上 interface 会很多余

java 的命名跟某个具体的 IDE 的某个功能没有什么特别的关系( PhpStorm 最新版也支持对 interface/class/abstract/trait 用不同的图标展示)

所以还是建议你找本代码整洁之道看看吧
yxzblue
2016-09-28 17:53:56 +08:00
去掉习惯,按照 PSR2 走起
pubby
2016-09-28 18:00:41 +08:00
代码规范参考 PSR-1 PSR-2 PSR-12(还只是 Draft)

但是这些都没有规定你一定要
$userModel
还是
$userModelObj / $userModelObject
还是
$userModelInstance

只要某个 scope 内统一就行
lml12377
2016-09-28 19:54:04 +08:00
@feiyuanqiu 谢谢耐心解答!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/309510

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX