老哥们定义变量名遵循啥规范?

2021-03-06 12:42:00 +08:00
 zhuzhibin

我一般是直接语义化英文翻译然后驼峰或者下划线拼接,然后编程上结合一些代码规范,大家可以一起来分享一下

例如定义:检查用户是否关注过公众号


const checkCustomerHasFollowedOfficialAccount = true;

bolean checkCustomerHasFollowedOfficialAccount = true

$checkCustomerHasFollowedOfficialAccount = true;


上面这种可能比较语义化,其他一些没有太语义化的你们怎么搞?例如定义一个变量:用户完成的任务总数量对应的奖品或者其他一些有的没的

强调一下啊,仅仅是作为分享贴,以和为贵,大家如果有好的一些编程规范可以分享出来,大家一起受用~

例如 PSR 规范 https://www.php-fig.org/psr/

2104 次点击
所在节点    问与答
27 条回复
superrichman
2021-03-06 12:51:31 +08:00
这名字太长了,要我就写 isSubscribed
zhuzhibin
2021-03-06 12:55:36 +08:00
@superrichman subscribe 是订阅吧 你要是简写也应该是 is_follow ?
superrichman
2021-03-06 13:10:13 +08:00
@zhuzhibin 我是习惯对象是人就 follow, 不是人就 subscribe
superrichman
2021-03-06 13:12:28 +08:00
@superrichman 不过也没多大差别, 口语上也会混着用
PerFectTime
2021-03-06 13:15:05 +08:00
随心所欲即可,记得住就可以
AllenHua
2021-03-06 13:16:28 +08:00
我和你差不多的习惯

不过变量名是一个名词 尽量语义化成一个名词就行了 前面的 check 检查的动作是逻辑代码里做的

检查用户是否关注过公众号 userHasFollowedOfficialAccount = true

检查用户是否正在关注公众号 userIsFollowingOfficialAccount = true
zhuzhibin
2021-03-06 13:17:09 +08:00
@superrichman 有点道理 狗头:)
zhuzhibin
2021-03-06 13:17:28 +08:00
@PerFectTime 你是记得住 其他老哥 review 的时候 就被骂了
AllenHua
2021-03-06 13:17:41 +08:00
英语的时态和语态 在变量命名中 如果语义化的很好 那么代码可读性就会很强(英语能力稍微过关即可)
PerFectTime
2021-03-06 13:20:08 +08:00
@zhuzhibin #8 小公司没有 review,自己看得懂就好
zhuzhibin
2021-03-06 13:26:40 +08:00
@PerFectTime 老哥,随心所欲没有错,因为不一定强制规范,但是你说小公司的没 review,这就是你的不对了(狗头),我也是在小公司,不管是自己写代码或者啥的,我们应该都要有一套规范或者说约定,这样自己以后也方便阅读,也方便别人阅读,跟公司大小无关,跟自己有关,例如你自己一个人写代码你同样可以遵循代码规范、git-commit 规范 https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines
zhuzhibin
2021-03-06 13:28:23 +08:00
@AllenHua 我觉得有时候那种没那么语义化的 我有点难定义 有时候赶时间就乱搞 直接直译一下 这里顺便也吐槽一下微信官方的文档 其实那些变量也不怎么滴 狗头:) 懂的都懂
wolfan
2021-03-06 13:33:42 +08:00
前缀简写,驼峰全名,词尾加属性。生成、设置类用_分割(不用驼峰)
wzb0909
2021-03-06 13:44:16 +08:00
模块化做好一点,小函数里面的变量名字就别纠结了。
zhuzhibin
2021-03-06 13:49:43 +08:00
@wzb0909 别抬手就模块化吧,每个人有各自的习惯,不觉得不纠结那就不纠结罢了
zictos
2021-03-06 13:54:02 +08:00
看到一段代码,如果变量名称太长而自己又没耐心去仔细研究的情况下会觉得很吓人,情愿去看变量短的,结构显得更简洁。但有耐心的情况下有时候变量长会好理解一点。
变量只是一个名称,只要能大致看懂就可以了,不然就成英语了。你说的“用户完成的任务总数量对应的奖品或者其他一些有的没的”,把“奖品”当作重点就行。再说同一个变量还可以反复赋值,函数里面的变量与外面的变量不冲突。
zhuzhibin
2021-03-06 14:05:59 +08:00
@zictos 确实有道理 感谢建议~
NexTooo
2021-03-06 14:07:44 +08:00
过长的话我会缩减,内部变量靠注释,外部会调用的变量一部分交给类名来解释
如你这个我可能会改成 checkFollowed 这样,便于阅读,如果还看不懂可以跳转到具体变量声明处看注释
NexTooo
2021-03-06 14:09:10 +08:00
个人观点,不是命名对应功能越完善就越好,突出重点就行了
你这个我要反复看两三次逐词翻译才能确定是啥意思,这种时候交给注释会更好吧,句子读起来比驼峰代码块快多了
MeatIndustry
2021-03-06 15:37:10 +08:00
建议阅读一下 clean code

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

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

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

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

© 2021 V2EX