定数を定義しよう
と思ってConstantsクラスやらを作ってpublic static final...なんちゃらしようとしたところ
そういえばstrings.xml
はいつ使うんだ?と思ったので調査。
Android公式サイト
公式サイトに何かの情報がないかと思ったが見つからなかった。。
さすがにそこまで親切に提案はしてくれないのかOTL
ちなみにStrings.xmlの使い方に関する説明があったので読んでみた。
今まで使いながら知らなかったことも新たに分かったので、やはり一度は目を通しておくべきかと。
使い分け
本論に戻って使い分けの調査。
英文ではあるが、Stack Overflowに以下のような質問がありました。
android - strings.xml vs static constants
回答を見ると、以下の四つの観点でまとめていました。
ローカライゼーション
Strings.xml(国際化対応)
メモリ
Constants(xmlファイルに定義するとオーバーヘッドが発生する)
パフォーマンス
Constants(ファイルから読み込むよりメモリから読み込む方が早い)
メンテナンス
人の好みによる
結論
大したことではないが、上のような差があるので、
・ユーザに表示するような文字列はStrings.xmlに定義する。
・プログラム内部で使う文字列はConstantsに定義する。
という意見だった。
確かに、考えてみたら当たり前のような気もしますね。
ちなみに、すでに同じことを日本語でまとめて下さった方がいました。
Androidの定数はvaluesフォルダ内のリソース定義するべきか?コード内でfinal staticで定義するべきか?的なメモ
こちらの方がもっと詳しく調べてくださっていました。
ありがとうございます。
その他の方法
職場のAndroidのソースを読んだ時は内部パス的なものを使ってました。
パッケージ名みたいにcom.hoge.huga.hogehoge
とパスを定義してファイルから呼び出すようになってたと思います。
これはなんでだろう。。。?
ちょっと調べてみましたがこのようなやり方は見つかりませんでした。
夏季休暇終わったら聞いてみようかな。。。
もし知っている方いらっしゃったら教えてください!