Kotlin で Constants をどう書くべきか。

ふと、こんな書き方ではないのでは? と思ってしまいました。


object DbConstants {
  const val TABLE_USER_ATTRIBUTE_EMPID = "_id"
  const val TABLE_USER_ATTRIBUTE_DATA = "data"
}

以下、stackoverflow より。

通常クラスにしたり。


public class DbConstants {
  companion object {
    val TABLE_USER_ATTRIBUTE_EMPID = "_id"
    val TABLE_USER_ATTRIBUTE_DATA = "data"
  }
}

トップレベルのプロパティにしたり。


package com.project.constants
const val URL_PATH = "https:/"

結論

GitHub を眺めてみます。
Constants.kt - GitHub Search
👉 Search · Constants.kt 

これが良さげでは?

ファイル名は、Constants.kt 。


@file:JvmName("Constants")
package org.videolan.resources

const val PREF_FIRST_RUN = "first_run"
const val EXTRA_FIRST_RUN = "extra_first_run"
const val EXTRA_UPGRADE = "extra_upgrade"

@JvmField val EXTRA_SEARCH_BUNDLE = "${ACTION_REMOTE_GENERIC}extra_search_bundle"
@JvmField val ACTION_PLAY_FROM_SEARCH = "${ACTION_REMOTE_GENERIC}play_from_search"
@JvmField val ACTION_REMOTE_SWITCH_VIDEO = "${ACTION_REMOTE_GENERIC}SwitchToVideo"

👉 vlc-android/Constants.kt 

みんなは、どう書いてますか。

教えてねー。


Turbine で Kotlin coroutine Flow をテストする

👉 cashapp/turbine: A small testing library for kotlinx.coroutines Flow 

Turbine は Kotlin Flow 向けのテストライブラリです。


flowOf("one", "two").test {
  assertEquals("one", awaitItem())
  assertEquals("two", awaitItem())
  awaitComplete()
}

タービン (Turbine) とは、流体 (Flow)がもっているエネルギーを有用な機械的動力に変換する回転式の原動機の総称。

👉 タービン - Wikipedia 

GitHub にあるサンプルコードを試してみます。

Flow を使っていれば意味は分かるでしょう。



kotlin coroutine flow turbine

@JakeWharton は、シンプルで使いやすい高品質なツールやライブラリで定評があります。

ネーミングは内容に忠実なだけでなく、センスもあります。


IDEA Intellij でファイル単体スクリプトを編集する方法

ツールなどちょっとしたスクリプトをIDEAの持つ機能を利用しながら書きたいときありません?

プロジェクト化して Git に登録とかせずに、ササッと書いて、実行するだけの場合の話。

ファイル指定でコマンドラインから起動すれば良い!!

👉 Opening Files from Command Line - Help | IntelliJ IDEA 

ここに書いてある

Tools | Create Command-line Launcher

からは今は作成できない。

👉 Toolbox App 1.11: What’s New. | JetBrains Blog 

Toolbox 設定で [Generate Shell script] で指定した場所に起動シェルスクリプトが書き出される。

Android Studio で、プロジェクトディレクトリの指定でも開ける。

ただのランチャーとしてもどうぞ。

言語の設定 (Python)

編集したいスクリプトのファイル名を rename_gopro.py とします。

1. idea bin/rename_gopro.py で IDEA を起動する。

2. [File]-[Project Structure] から Project Structure 画面を開く。

3. Platform Settings の [SDKs]-[Python 3.7] を選択する。

4. Project Settings の [Project]-[Project SDk]-[Python 3.7] を選択する。

5. 上部ツールバー内 [Add Configuration...] から Run/Debug Configuration 画面を開く。

6. [+]-[Python] で開いた画面で Script path を入力する。

7. 上部ツールバーから [Run/Debug] する。

ちなみに今回書き出された起動スクリプトは以下。

~/bin/idea


#!/bin/sh
# Generated by JetBrains Toolbox 1.16.1212 at Fri Jan 24 07:08:01 2020

open -a "/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/193.1212.39/IntelliJ IDEA.app/Contents/MacOS/idea" "$@"

~/bin/studio


#!/bin/sh
# Generated by JetBrains Toolbox 1.16.1212 at Fri Jan 24 07:08:01 2020

open -a "/Users/maochanz/Library/Application Support/JetBrains/Toolbox/apps/AndroidStudio/ch-0/191.1212548/Android Studio.app/Contents/MacOS/studio" "$@"

👉 JetBrains Toolbox で Android Studio の Stable/Beta/Canary が同時に管理できる? 
👉 GoPro 分割された動画ファイルの命名規則