アスクルの こたにん (@Kotanin0) です。
2020年のリリースですが、Kotlin 1.4からtrailing commaが実装 されました。
trailing comma とは 末尾カンマ と訳されるもので、関数などの引数のリストの末尾にあるカンマのことを指します。
fun usingComma( first: String, second: String, third: String, // <- ココのカンマのことを trailing comma(末尾カンマ) と呼ぶ )
めちゃくちゃ細かい仕様ですが、Kotlin1.4からは、このtrailing commaを記述できるようになりました。
trailing comma のいいところ
trailing comma を使うといいところは大きく2つです。
- パラメータ変更時の差分が1行で済む
- 行の入れ替えが容易
パラメータ変更時の差分が1行で済む
先ほどの関数に、パラメータを1つ増やしたとします。
fun usingComma( first: String, second: String, third: String, fourth: String, )
trailing commaがある場合とない場合では、差分が変わってきます。
trailing commaがない場合は、差分が2行になってしまっています。
trailing commaがある場合は、差分がたったの1行でシンプルですね。
このように差分がわかりやすいというのは、開発者にとっては小さいようで大きいですね。
行の入れ替えが容易
そこまで遭遇することではないかもしれませんが、フィールドの見た目上の順番を入れ替えたいときにも、trailing commaは有能です。
Kotlin公式ドキュメント にも、以下文章の記載があります。
After adding a trailing comma, you can then easily swap lines with parameters or values.
trailing commaがない場合は、フィールドを入れ替えた後に、末尾カンマをつけかえる必要があります。
ですがtrailing commaがある場合は、どのフィールドにもカンマがついているので、フィールドを入れ替えればおわりです。
オペレーションが少なくて済むというのもやはり、開発者にとってはよいことですね。
IntelliJ IDEA, ktlint, detekt の対応状況
trailing commaは、コーディングする際に意識できればよいですが、全員で統一することは難しいです。
リポジトリや言語によっては、trailing commaをつけないルールだったり、つけられない言語だったりもあるためです。
Kotlin においては、trailing commaが追加されてから、各種コード解析ライブラリやIDEも追従して対応されてきています。
IntelliJ IDEAでは、コードスタイルでtrailing commaを適用できるようになっています。
https://www.jetbrains.com/help/rider/Trailing_Commas_Style.html
ktlint では、すでにルールとして追加されています。
https://github.com/pinterest/ktlint/issues/709
detekt でも、次回リリースタグで導入される予定です。
https://github.com/detekt/detekt/pull/4227
まとめ
今回は、とても細かいところですが trailing comma についての紹介でした。
Kotlinに関するtrailing commaの言及をしましたが、他の言語でもこの仕様を持っている言語は多いので、ぜひ使ってみてください!