で使用してコードを最適化する
在这里插入代码片
一般的なUI構成ロジックは次のとおりです。
applicationWindow.title = "Just an example"
applicationWindow.position = FramePosition.AUTO
applicationWindow.content = createContent()
applicationWindow.show()
applicationWindow
繰り返し呼び出す必要があります。現時点ではwith
、コードをより簡潔で読みやすくするために最適化できます。
with(applicationWindow) {
// this: ApplicationWindow
title = "Just an example"
position = FramePosition.AUTO
content = createContent()
show()
}
with(..){...}
本質的に、それは受信機による拡張機能のカプセル化です
fun <T, R> with(receiver: T, block: T.() -> R): R =
receiver.block()
それはですのでwith
とても素晴らしい、なぜ多くのそれを使用しませんか?
Kotlinのソースコードには、フィルターなどのレシーバーを備えた拡張機能のアプリケーションが満載です。
fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T>
それを使用するとき:
persons.filter {
it.firstName == name }
ここit
でpersons
、開発者に良いリマインダーとなる属性firstName
はname
、ではありません。
それを次のように定義するとpredicate: T.() -> Boolean
:
persons.filter {
firstName == name }
読みやすさはit.firstName
とても良いです。
バランスが重要です
私たちが達成しようとしているコードの重要な品質は、簡潔さではなく、
読みやすさです。
コードが長すぎると、不必要な繰り返しが発生しやすくなります。コードが単純すぎると、コンテキストが多くなり、理解のコストが高くなります。いわゆる優れたコードには、読みやすさと簡潔さのトレードオフが必要です。
Kotlinを合理的に使用する
Kotlinは柔軟な構文機能を提供し、Javaよりも簡潔なコードを記述できます。ただし、「過修正」を回避し、読みやすさに影響するコードの簡潔さを盲目的に追求することにも注意を払う必要があります。さらに、with
たとえばapply
、他のスコープ関数に加えalso
て、適切なシナリオもあります。それらの意味it
を明確にthis
し、最も適切なシナリオに適用して、美しいコードを記述します。