4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android 定数の定義

Last updated at Posted at 2018-08-14

定数を定義しよう

と思って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とパスを定義してファイルから呼び出すようになってたと思います。
これはなんでだろう。。。?
ちょっと調べてみましたがこのようなやり方は見つかりませんでした。
夏季休暇終わったら聞いてみようかな。。。
もし知っている方いらっしゃったら教えてください!

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?