1
19
整理它的第一个小小的尝试就是去掉前导
下一步是稍微清理一下,在映射元组列表和
再做一些修改也有助于使代码的意图更加清晰:
下一步,使它更“实用”,就是把它分解成“实用”( 鬼鬼祟祟的,嗯? ). 理想情况下,每个函数都有一个明确表达其用途的名称,并且名称很短(目标是使其成为单个表达式,因此不需要大括号):
|
2
4
以下是我认为最好的布局方式:
我觉得在我的大脑深处,有一些算法可以在水平空间和垂直空间之间做出代码布局权衡的决定,但我似乎没有直接的途径来表达它。:)
关于引入名称而不是使用lambda,我认为我通常做的是,如果我想用一个简短的注释来描述代码的意图,但是一个好的标识符名称也可以这样做,那么我可以将一个一次性lambda放入一个命名函数中,以获得标识符名称的可读性好处。与
(免责声明:我不写Scala,所以如果我说的任何东西与风格约定相冲突,请忽略我:),但我认为很多建议基本上是语言不可知的。) |
3
4
严格地讲如何 格式 代码,不做任何结构更改,我会这样做:
或者,也许,为了避开无参数方法,我会这样做:
请注意,有足够的空间发表评论,但是,一般来说 正在做的事情通常是清楚的。不习惯的人有时会迷路 中途,没有变量来跟踪 转换后的值。 现在,我会做一些不同的事情:
我也不会在同一步中求和和和乘法,所以:
最后,我不太喜欢调整字符串大小,所以我可能会使用regex。再加上一点重构,我可能会这样写:
编辑 下一步将是重命名重构——选择能更好地传达代码每个部分所做工作的名称。Ken在评论中建议了更好的名字,我会把它们用在另一个变体上(它也很好地展示了 更好的 命名提高了可读性)。
|
4
1
除了凯文的解决方案, 关键是在考虑到可重用性和可读性的情况下,清晰、整洁地划分功能。 为了使代码更加简洁,似乎可以使用for表达式。
s.map(-'A'+1)部分可以进一步放入一个函数中,比如wordSum,如果您希望它更加清晰。 |
davidzxc574 · 将字符串缩放为字符 2 年前 |
yic_l · 什么是“!”在这个函数中是什么意思? 2 年前 |
Jelly · Scala:用于理解递归未来 2 年前 |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 2 年前 |
Iheb Mar · 卡夫卡制作人/消费者粉碎每一秒的API调用 2 年前 |
B. Bal · 在Scala中重用类成员 2 年前 |