我熟悉“Scala coding styles and conventions?”
我还阅读了this article,其中指出程序员每天只能生成如此多的代码行,因此具有“更好”语法的语言只能帮助实现这一目标。
由于世界上没有什么是完美的,Scala的语法有缺点(当然有人可以将这些视为纯粹的优势)。我说的是:
def someMethod(someParameter: Int): Boolean = {
// import here in the middle of nowhere
import com.example.bad.VeryBad._
// semicolon here? maybe?
val two = 1+1;
// nested function here
def boo(a: Int) = a+1;
// now do something useful
println(boo(two))
// for God's sake don't use return!!!
two == 2
}
如果有一个Java背景(甚至是C ++,C#等),在函数中间使用import语句,拥有嵌套函数并且我甚至没有进入其他语言结构,这有点奇怪。 / p>
我对Scala带来的实际生产力增长持怀疑态度。你是如何体验这一点的?您是否应用了所有(尽可能多)编码约定,这是一个真正的好处吗?是否有更好的方法来围绕这种代码风格?
P.S。也许整个帖子可以转移到程序员或类似的......
答案 0 :(得分:1)
我只能分享我的经验,我不知道其他人的经历是否相似。这当然取决于个人喜好。
以块为单位进口
我从Java来到Scala,所以我的首选是将所有导入放在文件的顶部。这使我更容易更快地看到文件的依赖关系。但有时我会在我想在本地导入名称的地方使用本地导入,而不是污染整个文件的命名空间。
<强>分号强>
在Scala工作几周后,我真的很喜欢缺少强制性的分号。在Scala中,他们通常不需要,但是当你想在一行上写更多简短的陈述时,它们会很有帮助。 Scala实际上改变了我对分号的态度,现在在新项目中我甚至在JavaScript中都不使用分号。
嵌套功能
这是Scala的最佳功能之一:功能编程。它允许编写更简单的代码,包括使用不可变数据的易于理解的小函数。这降低了代码的复杂性,减少了错误并提高了工作效率。
<强>返回强>
同样,缺乏回报陈述感觉很自然。该函数返回其表达式的值,其中一系列语句/表达式的值是它们中的最后一个。返回语句在Scala中感觉非常不自然。
<强>生产力强>
Scala有一个学习曲线,当然,当我开始我的生产力时,由于我对语言和标准库不熟悉而导致了学习。现在,经过几个月的Java和Scala工作,我可以说我在Scala中比在Java中更有效率。即使我认为自己是Java专家,但只是Scala新手。答案 1 :(得分:0)
在许多情况下,将此类导入用于implicits非常有用。
对于这种用法,导入使代码更安全,更易读。
第二种情况是模糊的类和包名(可以通过别名来解决)。显示正在使用的明确表示可能会有所帮助。
在Scala中,你可以通过多种方式做很多事情,有点像C ++。您对编码风格负有更多责任。请注意:https://www.youtube.com/watch?v=kkTFx3-duc8&feature=share
嵌套方法非常适合重复发生,并且在类级别不应该使用此类方法时也不应该使用。使用嵌套,您还可以减少传递的参数数量。
如果你能,那么你应该将嵌套方法放在方法体的顶部。对大班级构造函数主体的评论也有帮助。
Scala为社区提供了开发语言的能力,由于我们的实验和良好实践,scala可以在基本方面发生变化。