前辈写的代码,要不你来解释一下?

2023-06-18 00:11:16 +08:00
 x77
String get string {
  return switch (this) {
    Gender.male => "Male",
    Gender.female => "Female",
  };
}
4452 次点击
所在节点    程序员
38 条回复
janus77
2023-06-18 23:34:02 +08:00
1. 为了多语言
2. 为了预留产品可能改文案,比如改成帅哥美女这种
3. 为了预留更多的类型,比如 LGPT 等等
4. 屎山没改干净。
总之,你可以改,但是发个帖来问真的没必要
way2explore2
2023-06-19 04:24:38 +08:00
@star7th

我无语的点在于,这里边他没提升可读性。
只是不熟悉 JS 。
way2explore2
2023-06-19 04:26:24 +08:00
@Alalajiyh

他有 return false

他代码三行, 伪代码如下

If condition
Return true

Return false

我建议
Return condition
way2explore2
2023-06-19 04:27:30 +08:00
@fregie
请指教,可读性提升在哪里?

从我的角度看,他只是不会写 JS ,(他也确实是 JS 新手)
way2explore2
2023-06-19 04:28:06 +08:00
@star7th 请问,可读性提升在哪里?
ma836323493
2023-06-19 09:10:36 +08:00
@way2explore2 可读性在于对于弱类型语言,一眼能看出返回结果类型 和 判断条件
lucasji
2023-06-19 09:13:18 +08:00
@star7th #19 请问同事的代码的可读性体现在哪里?层主的代码直接返回 condition ,那么我在阅读这个 condition 并且思考过该 condition 何时为 true ,何时为 false 时,这个函数就已经结束了。但是同事的代码我不仅需要思考该 condition 为 true 或 false 的情况,更要去思考 if 块里面的逻辑。因为你使用了 if 模块,那么就相当于告诉其他人,我的代码依托于 condition 有额外的逻辑,但是同事的 if 块居然直接返回 true 或 false (这是 condition 已经表达过的意思),给人从思考上带来了无用的额外负担。
ma836323493
2023-06-19 09:15:41 +08:00
@way2explore2 另只不过是习惯而已,if 的那种根本一点都不需要动脑子, 而且后续 if 里如果还有其他操作,就必须这样写了
ty29022
2023-06-19 10:08:15 +08:00
你们真的是,绣花的事情争来争去,门槛低嘛,谁都能掰扯两句
喜欢雕琢细节大可以讨论一些更有意义的话题,比如命名呀,缓存友好呀,代码缩进和扁平化啊
只能说**严于律己 宽于待人**
roycestevie6761
2023-06-19 10:16:30 +08:00
这种代码以后都是 copilot 的工作了。一个 tab 键拿下
hxysnail
2023-06-19 10:18:43 +08:00
@ma836323493 @way2explore2 我想到一个比较粗鄙的类别,不要生气哈

这种写法,让我想起一句俗话:脱裤子放屁。放屁需要脱裤子吗?——似乎不需要,但脱了也不会死,而且万一放完屁后刚好还想拉屎呢?

虽然我也觉得放屁没必要脱裤子,但不同的人有不同的考量点。有的人愿意为未来的小概率事件未雨绸缪;有的人连火烧眉毛的事都为所谓;我老板也经常说,要干好一件事不容易,其中人是最不可控的因素。

所以最关键的是,找到志同道合的人合作。这也是物以类聚,人以群分的这句古话的含义。如果实在没有办法,那就捏着鼻子走呗,管它的
FakerLeung
2023-06-19 10:44:06 +08:00
@way2explore2
看后面还会不会来个 If condition2 Return true
jifengg
2023-06-19 10:51:17 +08:00
Dart SDK 版本 2.17 以上可用“增强枚举”。

https://dart.cn/guides/language/language-tour#enumerated-types
3000codes
2023-06-19 11:49:27 +08:00
@way2explore2 要看这个条件语句是否包含了所有条件,如果只有这一种情况发生,我赞同你的代码,大部分情况还是赞同你同事的
way2explore2
2023-06-19 18:12:37 +08:00
@3000codes 只有一种。

如果是多个条件,我当然不会建议缩写到一行啊。可能我举例的时候,说的不够详细。

```js
const isComplicated = (user:User):bool => {
if (user.role === 'admin' || user.role === 'manager' ) {
// 只有这一个 if condition
return true
}
return false

}
```
他写的代码,那两行代码,`return true, return false`, 看得我想吐 🤮
所以我 PR Review 里建议
=>

```javascript
return (user.role === 'admin' || user.role === 'manager')
```



然后他说,他自己写的更易读。另一个 Graduate 复议说,看不懂第二种写法。
star7th
2023-06-19 19:54:43 +08:00
@way2explore2 @lucasji

我没太认真看。
我的意思是建议使用这种明确 return true 或者 false 的方式。这样一看就知道返回布尔值。
直接返回一个表达式的可读性并不高,我要多看一眼去确认才知道他返回的仅仅是一个布尔值还是表达式后再运行什么再返回。

即 我认为

if( 1 === 1 && 2 === 2 ){
return true ;
}else{
return false;
}



return 1 === 1 && 2 === 2

的可读性好 。
zaqzhin
2023-06-19 20:10:42 +08:00
Alalajiyh
2023-06-19 20:57:02 +08:00
@way2explore2 那完全没问题,不改变功能的前提下。我无理由支持你的写法

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

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

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

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

© 2021 V2EX