Skip to content

Instantly share code, notes, and snippets.

@maeharin
Last active February 3, 2018 01:03
Show Gist options
  • 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あんまり関係ない。。)

@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