KotlinのLT会!Kotlin入門者の集い https://kotlin.connpass.com/event/52374/
Kotlin + Javaで始めるAndroid開発2017.06.26 KotlinのLT会!Kotlin入門者の集い@tebasakyu
View Slide
自己紹介● 鈴木 誠 (Makoto Suzuki)○ 娘: 遙華(Haruka) 4ヶ月● Monstar Lab, Inc.● Android Engineer● Twitter: @tebasakyu● GitHub: @tebasakyu
Start New Projector
択一だっけ?
Start New Projectand
立ち回りの基本● KotlinがJavaからどう見えるのか理解する● Java勢に優しくなる○ PublicなものはJava寄りに記述○ Privateなものは好きに書く● 役割分担○ Utilなどのメンテすることが少ないもの■ 引き継ぎコストを(多少は)気にしなくなる○ テストクラス
どう見える - Null Safetyclass StringUtil {companion object {@JvmStaticfun equals(value1: String?, value2: String): Boolean {return TextUtils.equals(value1, value2)}}}
どう見える - 拡張関数FileName: ViewExtentions.ktfun View.toVisible() {this.visibility = View.VISIBLE}
どう見える - 拡張関数FileName: ViewExtentionsKt.javapublic static void toVisible(@NonNull View view) {view.setVisibility(View.VISIBLE);}Javaからはこのようなクラスとメソッドが用意されている様に見えている。ものによっては、あまり便利に使えない場合もある。
PublicでもKotlinしていいところfun newInstance(id: Int) = DetailFragment().apply {arguments = Bundle().apply {putInt(KEY_ID, id)}}例えば、Fragmentのインスタンス生成を行う関数。
● 戻り値の型の省略○ DetailFragment#newInstanceの戻り値は自明なので、これならば省略しても大丈夫。○ “isHoge”関数も同様に省略して良い。■ 名称から見て、Booleanを返すのは自明である。● スコープ関数の使用(apply)○ DetailFragment#newInstanceの内容を呼び出し元が大きく気にかけることは無い。そのため、自由に記述しても大丈夫。○ 仮に渡す値が増えても、改修内容は複雑では無い。
PublicでもKotlinしていいところfun toUpperCase(value: String?) {value ?: returnvalue.toUpperCase()}fun toLowerCase(value: String?) {value?.run {toLowerCase()}}条件が複雑でなければ雰囲気で分かる
ライブラリ● Javaで書かれたもの○ 概ね自由に使える○ Annotationものにはkaptを忘れないこと● Kotlinで書かれたもの○ Javaから実行する際に公式readmeと記法が異なる場合があるので注意されたし例:”@JvmStacic”の有無でJavaから実行する際の記法が異なるなし:FrogUtil.Companion.pickles();あり:FrogUtil.pickles();
コードレビュー● 互いに実施して理解を深め合う○ チームでレベルアップする● 読み方が分からない、分かりづらいポイントは解説する● レビューを通して、コーディングのルールを作っていく
Thank you.