3.2.2 使用命名参数提高可读性

代码只编写一次,但要多次读取和更新。我们所能做的任何减轻读者负担的事情都是受欢迎的。在像greet("Scott","Howdy")这样的调用中,不难推测这些参数代表什么。但是你可能会遇到这样的调用:

你可能想知道这些数字是什么意思,在处理迫在眉睫的最后期限时,这一点儿也不好玩。你必须切换上下文,并查看函数或其声明的文档,以便找到这些神奇数字的含义。

写得不好的代码会把最有礼貌的人变成一个可怕的家伙——可读性问题。Kotlin是一种流畅的语言,这一原则也适用于方法调用。

在不改变函数定义方式的情况下,花费很少的功夫就可以使调用方法更具可读性。这就是命名参数的作用。

让我们使对createPerson()的调用可读:

这样就好多了——不用猜测,也不用为这些参数的含义而大惊小怪。你可以在函数调用中为参数名赋值。即使函数将weight作为最后一个参数,在调用中也不要求它是最后一个参数;命名参数可以按任何顺序放置。

本代码中的混淆之处在不同的整数值之间,createPerson中name的值是直观的。我们可以将命名参数放在位置参数之后,如以下两个例子所示:

虽然最后一个是有效的Kotlin语法,但是从可读性的角度来看,使用命名参数来表示age可能更好。

因为age有一个默认参数,所以如果对所有其他参数使用命名值,或者对其左边的所有参数使用位置参数,对所有其他参数使用命名参数,那么可以忽略它。

例如,下面两个忽略了age参数的调用是合法的:

命名参数使方法调用具有可读性,还可以在向现有函数添加新参数时消除潜在的错误。当传入的参数不明显时使用它们。现在让我们把注意力转向Kotlin的另外两个特性,它们可以减少方法调用中的混乱。