Skip to content

Instantly share code, notes, and snippets.

@maeharin
Last active February 3, 2018 01:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maeharin/2fd2020d8a94b5e752971cf731232243 to your computer and use it in GitHub Desktop.
Save maeharin/2fd2020d8a94b5e752971cf731232243 to your computer and use it in GitHub Desktop.
Kotlinよもやま相談会 2018/2/1

Kotlinよもやま相談会 2018/2/1

(前原)モデルのidをnullableにするかどうか

DBに保存する前はIDが存在しないので、一律でnullableにしてるけど、みんなそうなん?

class User(
    val id: Int?, // ここ
    val name: String
)

(前原)Javaのライブラリへのinput, outputどうやってる?

javaのDBアクセスライブラリのDoma2を使ってるんだけど、何もしないとEntity(SQLの取得結果レコードがマッピングされるPOJO)はJava。そのままだとnullableか否かがわからない 自分の場合、doma-genという自動生成コマンドをちょっと改造して、DBのカラムがnotnullかどうかでjetbrainsのアノテーション(@Notnull, @Nullable)が自動で付与されるようにした

(前原)DBアクセスライブラリ、何使ってる?メリデメあれば

自分達はDoma2使ってる。DomaはKotlinを実験的にサポートしてるけど将来ハマりたくないので、DomaはJava。RepositoryImpl層でKotlinに手動で詰替てる。MybatisとかDBFluteとかJPAとかExposedとかどうなんだろ

(前原)DBにつなぐテストって何使ってる?

DBSetup?

(前原)イディオム:enumでプリミティブな値からenum生成するときってどうやってる?

こんな風にしてるけど、みんなどう?

// 該当する値が無い時に例外発生させたい場合は、こんな感じでfirstで
enum class DomaGenderEnum(val code: String) {
        FEMALE("0"), MALE("1"), UNKNOWN("9");

        companion object {
            fun from(code: String) = values().first { it.code == code }
        }
}

// null返したいならfind使うか
enum class DomaGenderEnum(val code: String) {
        FEMALE("0"), MALE("1"), UNKNOWN("9");

        companion object {
            fun from(code: String) = values().find { it.code == code }
        }
}

// map使いたければ、これでいいのでは?
enum class DomaGenderEnum(val code: String) {
        FEMALE("0"), MALE("1"), UNKNOWN("9");

        companion object {
            private val codeMap = values().associateBy { it.code }
            fun from(code: String) = codeMap[code]
        }
}

(前原)イディオム:2つの値が両方nullでなかったら、、という条件分岐をどう書く?

こんな風にletを2回やるようにしてるけど、どう?

val  geoCode = param.latitude?.let { lat -> param.longitude?.let { lng -> GeoCode(lat, lng) } }

(前原)サーバーサイドのディレクトリ構造どうやって切ってる?(Kotlinあんまり関係ない。。)

@suusan2go
Copy link

(鈴木) 拡張関数の使い所

拡張関数は便利なんだけれど、やりすぎると可読性を下げるし設計がめちゃくちゃになりそうな感じがして、あまり使えてない。
逆に、みなさんの使い所を知りたい。こういうユースケースで使うと便利だしイイよ!みたいな。

@qsona
Copy link

qsona commented Feb 1, 2018

前提:
kotlin/gRPC で BFF (Backends for Frontends) を作ろうとしている。
Android, iOSアプリに向けたもの。
クライアントエンジニアに書いて欲しいという気持ちで、Kotlinを選択した。

(finc) coroutine, Non-blocking IO

の理解が怪しいのでお聞きしたい。

(finc) フレームワークまわり

  • spring bootとkotlinとの相性
  • ktorってどうなんでしょう?

(finc) ベストプラクティス, アンチパターン

  • androidじゃなくてwebで使う場合に起こりがちな問題点?
  • annotationはよく使う?
  • テストフレームワークは何使ってるか

(finc) 学習

  • swiftの人がkotlin書くときにすぐ覚えられるか, 覚えるコツ
  • Javaの人がkotlin書く時の気をつけるポイント

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment