[scala代码风格指南]--缩进

本文介绍了Scala编程语言的代码规范,包括缩进、行包裹、大量参数的方法调用等方面的最佳实践,帮助开发者写出清晰、易读的代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

英文原文:http://docs.scala-lang.org/style/

译文如下:


缩进

缩进应遵循“2个空格的惯例”。因此,而不是像这样缩进:


  
  1. // wrong!
  2. class Foo {
  3. def bar = ...
  4. }

你应该这样缩进:


  
  1. // right!
  2. class Foo {
  3. def bar = ..
  4. }

Scala语言鼓励了嵌套范围和逻辑块(函数值等)的惊人数量。自己动手,不要在语法上自己找麻烦,开辟一个新的代码块。来自Java,这种风格确实需要一些习惯,但这是值得的。

行包裹

有时单个表达式达到一个长度,它变得不可读,以将其限制在单行(通常长度超过80个字符的任何地方)。在这种情况下,首选 方法是通过将中间结果分配给值来简单地将表达式分解为多个表达式。但是,这并不总是一个实际的解决方案。

当绝对需要将表达式包含在多行以上时,每个连续的行应该从第一行缩进两个空格 还要记住,Scala要求每个“换行符”要么是一个未封闭的括号,要么以一个没有给出正确参数的中缀方法结束:


  
  1. val result = 1 + 2 + 3 + 4 + 5 + 6 +
  2. 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 +
  3. 15 + 16 + 17 + 18 + 19 + 20

没有这种拖尾的方法,Scala会在一行的末尾推测出一个分号,这个行的意思是打包,有时甚至没有一个警告就抛出编译。

具有大量参数的方法

当调用一个需要大量参数的方法(在五个或更多的范围内)时,通常需要将方法调用包含在多行中。在这种情况下,将每个参数本身放在一行上,缩进当前缩进级别的两个空格:


  
  1. foo(
  2. someVeryLongFieldName,
  3. andAnotherVeryLongFieldName,
  4. "this is a string",
  5. 3.1415)

这样一来,所有参数都会排队,但是如果稍后更改方法的名称,则不需要重新对齐它们。

应该非常小心,以避免这种类型的调用在线路的长度上。更具体地说,当每个参数必须缩进超过50个空格以实现对准时,应该避免这种调用。在这种情况下,调用本身应该移动到下一行并缩进两个空格:


  
  1. // right!
  2. val myLongFieldNameWithNoRealPoint =
  3. foo(
  4. someVeryLongFieldName,
  5. andAnotherVeryLongFieldName,
  6. "this is a string",
  7. 3.1415)
  8. // wrong!
  9. val myLongFieldNameWithNoRealPoint = foo(someVeryLongFieldName,
  10. andAnotherVeryLongFieldName,
  11. "this is a string",
  12. 3.1415)

更好的是,只是尝试避免任何需要两三个参数的方法!



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值