[Kotlin] 末尾カンマ
目次
Kotlinの末尾カンマは、Kotlin 1.4において導入されました。引数リストの最後の要素の後にカンマを付けられる文法です。以下の val c: Int,
の ,
の部分を指しています。Kotlin 1.4から、この ,
の部分を追加することが可能になりました(なくても良い)。
data class AwesomeDataClass(
val a: Int,
val b: Int,
val c: Int,
)
この末尾カンマが導入されて一番嬉しいのは、ここに新たな引数を追加した場合に、追加した行にのみ差分が生じることです。以下のような差分です。
val c: Int,
+ val d: Int,
)
末尾カンマを使わない場合の差分は以下のようになります。
- val c: Int
+ val c: Int,
+ val d: Int
)
末尾カンマを使った場合は、追加された引数の行にだけ差分が生じています。追加された箇所にだけ着目して差分を見ることが可能です。
引数を横に並べる場合は末尾カンマがあってもあまり嬉しくはありませんが、引数を縦に並べる場合は末尾カンマがあると嬉しいです。自分は引数を縦に並べたいので、(Kotlinのバージョンが1.4以前の場合を除いて)可能な限り、末尾カンマを使うようにしています。また、コードレビューなどでも、IMO1、IMHO2として、末尾カンマの使用を広める活動を地道に行っています。
なお、Kotlin公式のCoding conventionsには、以下の記述があります。変更の差分が見やすくなるというメリットの他に、引数の順序を入れ替えることとコードの生成が容易となることが、末尾カンマのメリットとしてあげられています。
- It makes version-control diffs cleaner – as all the focus is on the changed value.
- It makes it easy to add and reorder elements – there is no need to add or delete the comma if you manipulate elements.
- It simplifies code generation, for example, for object initializers. The last element can also have a comma.
References
- What’s new in Kotlin 1.4 | Kotlin、Retrieved from https://kotlinlang.org/docs/whatsnew14.html)(最終アクセス日:2022/05/31)
- Coding conventions | Kotlin、Retrieved from https://kotlinlang.org/docs/coding-conventions.html#trailing-commas)(最終アクセス日:2022/05/31)
書いている人 😎

茨城県つくば市在住のモバイルアプリケーションアーキテクト(Androidが得意です)。モバイルアプリのアーキテクチャ、自動テスト、CI/CDに興味があります。いわゆる「レガシーコード」のリファクタリング・リアーキテクチャが好きです。
👉 もっと詳しく
著書 ✍
ソフトウェアデザイン 2023年6月号📚
特集「クリーンアーキテクチャとは何か?」の第5章「モバイルアプリ開発における実践」を執筆しました。
Android クリーンアーキテクチャ ヒッチハイク・ガイド🧳
Androidアプリでのクリーンアーキテクチャに入門するためのガイダンスです。クリーンアーキテクチャの概念を理解し、Androidアプリに適用する方法を解説しています。
Android ユニットテスト ヒッチハイク・ガイド🧳
Androidアプリのユニットテストに入門するためのガイダンスです。初学者が混乱せずにAndroidアプリのユニットテストを書き始めることができる、ということを目的としています。
Android MVVMアーキテクチャ入門🛠
Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。NextPublishingより出版されています。
関連記事 👀
- DroidKaigi.collect{ #1@Tokyo }で「例外を投げるな、値を返せ」というLTをしました
- [Kotlin] ifを愛でる
- [Kotlin] ユークリッドの互助法を用いて最小公約数・最小公倍数の計算を実装する
- [Kotlin] 負数に対する除算の商と剰余
- [Kotlin] はじめてのカリー化