我一般是直接语义化英文翻译然后驼峰或者下划线拼接,然后编程上结合一些代码规范,大家可以一起来分享一下
例如定义:检查用户是否关注过公众号
const checkCustomerHasFollowedOfficialAccount = true;
bolean checkCustomerHasFollowedOfficialAccount = true
$checkCustomerHasFollowedOfficialAccount = true;
上面这种可能比较语义化,其他一些没有太语义化的你们怎么搞?例如定义一个变量:用户完成的任务总数量对应的奖品或者其他一些有的没的
强调一下啊,仅仅是作为分享贴,以和为贵,大家如果有好的一些编程规范可以分享出来,大家一起受用~
例如 PSR 规范 https://www.php-fig.org/psr/
1
superrichman 2021-03-06 12:51:31 +08:00 via iPhone
这名字太长了,要我就写 isSubscribed
|
2
zhuzhibin OP @superrichman subscribe 是订阅吧 你要是简写也应该是 is_follow ?
|
3
superrichman 2021-03-06 13:10:13 +08:00
@zhuzhibin 我是习惯对象是人就 follow, 不是人就 subscribe
|
4
superrichman 2021-03-06 13:12:28 +08:00
@superrichman 不过也没多大差别, 口语上也会混着用
|
5
PerFectTime 2021-03-06 13:15:05 +08:00
|
6
AllenHua 2021-03-06 13:16:28 +08:00
我和你差不多的习惯
不过变量名是一个名词 尽量语义化成一个名词就行了 前面的 check 检查的动作是逻辑代码里做的 检查用户是否关注过公众号 userHasFollowedOfficialAccount = true 检查用户是否正在关注公众号 userIsFollowingOfficialAccount = true |
7
zhuzhibin OP @superrichman 有点道理 狗头:)
|
8
zhuzhibin OP @PerFectTime 你是记得住 其他老哥 review 的时候 就被骂了
|
9
AllenHua 2021-03-06 13:17:41 +08:00
英语的时态和语态 在变量命名中 如果语义化的很好 那么代码可读性就会很强(英语能力稍微过关即可)
|
10
PerFectTime 2021-03-06 13:20:08 +08:00
@zhuzhibin #8 小公司没有 review,自己看得懂就好
|
11
zhuzhibin OP @PerFectTime 老哥,随心所欲没有错,因为不一定强制规范,但是你说小公司的没 review,这就是你的不对了(狗头),我也是在小公司,不管是自己写代码或者啥的,我们应该都要有一套规范或者说约定,这样自己以后也方便阅读,也方便别人阅读,跟公司大小无关,跟自己有关,例如你自己一个人写代码你同样可以遵循代码规范、git-commit 规范 https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines
|
12
zhuzhibin OP @AllenHua 我觉得有时候那种没那么语义化的 我有点难定义 有时候赶时间就乱搞 直接直译一下 这里顺便也吐槽一下微信官方的文档 其实那些变量也不怎么滴 狗头:) 懂的都懂
|
13
wolfan 2021-03-06 13:33:42 +08:00 via Android
前缀简写,驼峰全名,词尾加属性。生成、设置类用_分割(不用驼峰)
|
14
wzb0909 2021-03-06 13:44:16 +08:00 via iPhone
模块化做好一点,小函数里面的变量名字就别纠结了。
|
16
zictos 2021-03-06 13:54:02 +08:00
看到一段代码,如果变量名称太长而自己又没耐心去仔细研究的情况下会觉得很吓人,情愿去看变量短的,结构显得更简洁。但有耐心的情况下有时候变量长会好理解一点。
变量只是一个名称,只要能大致看懂就可以了,不然就成英语了。你说的“用户完成的任务总数量对应的奖品或者其他一些有的没的”,把“奖品”当作重点就行。再说同一个变量还可以反复赋值,函数里面的变量与外面的变量不冲突。 |
18
NexTooo 2021-03-06 14:07:44 +08:00
过长的话我会缩减,内部变量靠注释,外部会调用的变量一部分交给类名来解释
如你这个我可能会改成 checkFollowed 这样,便于阅读,如果还看不懂可以跳转到具体变量声明处看注释 |
19
NexTooo 2021-03-06 14:09:10 +08:00
个人观点,不是命名对应功能越完善就越好,突出重点就行了
你这个我要反复看两三次逐词翻译才能确定是啥意思,这种时候交给注释会更好吧,句子读起来比驼峰代码块快多了 |
20
MeatIndustry 2021-03-06 15:37:10 +08:00 via iPhone
建议阅读一下 clean code
|
21
ALVC666 2021-03-06 16:24:08 +08:00
我也有陷入过这种的情况
感觉过长的还是缩短然后加注释比较好 |
22
wzb0909 2021-03-06 19:15:59 +08:00 via iPhone
@zhuzhibin 是的你说的对。
如果这个变量是用户的属性,公众号只有一个,我想就是 isSubscribed 最好。 如果是一个方法,并且用户和公众号都是不定的参数,哎,这是一个关系查询,我喜欢把动词放前面,用不同动词区分本地 /远程,立刻 /缓存,突出一个对立的差别。动词的参数变多,后面跟的解释难以避免会复杂。如果公众号确定一个,上面网友说的 checkFollowed 就好(当然我还是认同 subscribe )。 check_subscribed 和 subscribed 是两个概念,前者生成后者。然后,我感觉前面的网友都,是当作属性名字去讨论的,是方法就更复杂些(动词比名词复杂)。 我不喜欢长名字,不过长名字有时候也必要。 |
23
aoeui 2021-03-06 19:19:24 +08:00 via Android
yhsfgzgzh 🐶
|
24
123abcdf11345 2021-03-06 19:36:16 +08:00
woshigebianliang = true
|
25
Shook 2021-03-06 19:50:29 +08:00
// 用户是否关注过公众号
const isFollowed = true; |
26
zhuzhibin OP |
27
RedBeanIce 2021-03-06 20:33:23 +08:00
1,Java 编码的时候,一般建议少写不必要的注释,代码可以描述清楚的问题代码解决
2,变量长一点没有太大关系,不要过于长,如一,代码越清晰越好 3, |