Androidの定数はvaluesフォルダ内のリソース定義するべきか?コード内でfinal staticで定義するべきか?的なメモ
前の会社を諸事情というか自己都合で退職して、Androidの勉強が足りない!という欠乏みたいなものを補うために活動を色々始めた。
RxJavaやDroidux、Dagger2などを勉強するため、サンプルのAndroidのプロジェクトを作ってて、普段なら適当にこなしていた部分にふと立ち止まる。
題名通り、迷った。
そこでどういう基準で他の人が使っているかを調べてみた。
検索キーワード「android constants xml static」にしてgoogleさまにお伺いを立てる
検索結果を見る。
http://stackoverflow.com/questions/16160047/android-strings-xml-vs-static-constants
↑上だと
So my suggestion is
use string resources for the texts which will be displayed to user.
and
use static constants for internal puposes of your program like database names, internal variable, intent filter name etc.
つまり訳すと。
- ユーザーに表示される文字列は、文字列リソース(xml)から使え。
- プログラム上で使う目的(データベース名や、内部変数、Intent-filterの名前など)では定数を使え。
大方同意だ。画面に表示する文字列については国際化対応には必須だろう。
次も見よう。またStackOverFlow。
The biggest advantages of using project resources is the ease of access and that they allow you to organize your project significantly.
まぁ簡単に訳すと
- XMLリソースにしておくとプロジェクトをより整理されたものにできる。
XMLにすべきものがここで大体、腑に落ちた。
つまり、
- プロジェクトで管理する定数(valuesで管理)とそうでない定数(final static)でちゃんと分けろ。
- 表示に使う文字列は国際化対応を想定して最初からstring.xmlにしておけ。
追加で言うなら。
XMLで定義しておくとlayoutファイルに直接使えるので
こんな感じかな。
応用編?
プロジェクトで共有して、自動で切り替えたい値があるとき。
フラグをgradleのflavor機能のBuild Variantsで自動に切り替えたいなら
http://qiita.com/shts/items/d94834437b22712415c5
にあるように自動生成されるBuildConfigファイルに定数をVariantsで切り替えられるようにしておくといい。
他にあればツッコミ欲しいかな。
つかQiitaでよくね?
「Androidでアプリ上で使う定数の種類分類とその扱い方まとめ」
みたいな感じで。