Scala代码样式和约定

时间:2015-04-30 08:38:30

标签: java scala coding-style

我熟悉“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。也许整个帖子可以转移到程序员或类似的......

2 个答案:

答案 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可以在基本方面发生变化。