pooh3's memo

Android周りを中心に。軽めに、いい加減さ50%程度で

AndrodSDKのソースコードの命名規則について調べてみた。

  • 最近Android開発で命名規則について迷うことがあった。
  • みんなどんな命名規則つかってる?
  • でも結局ローカル規則だよね。それって幅広く使える?

ねぇねぇprivate static finalの時ってどうしてる?全部大文字?


なんていうか…そうだ。僕は文句いわれない命名規則がほしいんだ!



ということで、一番簡単に手に大量のソースコードをみることができる
AndroidSDKManagerからgrepしてみることに。


ApiLvは19を対象
/adt-bundle/sdk/sources/android-19/
以下で検索コマンドはshellコマンドの「grep -r "対象文字列" ./」


調査対象は

  • 個数を表す命名規則(よく困るからNumOfで回避してるけどしっくりこない)
  • private static final なメンバ(内部固定値って大文字?)
  • public staticメソッド(アッパーキャメルケース(大文字から始まるキャメルケース)を見ることがあるので)
  • 命名規則ではないけど…switch文の使われ方(まぁよく使うと思うけど、どんな風に使ってるか気になるよね)
  • mで始まるメンバ変数を thisで呼んでる。(mはthisを省略するためだと思っているが、そうではないという見方もあるので)
  • mIs◯◯というbooleanのisではじまる系をmで始めるパターン
  • 他はー…んーいまんところ思いつかないから思いついたらまた取り上げるかな。
  • 疑問に思ったらgoogleの方々が書く公開ソースコードで調べる!な感じでネタがたまったらブログにする


調査結果

個数(size、length、num、countとかそんな感じ)

  • "int size" 1,264件該当
  • "int length" 843件該当
  • "int count" 1,423件該当
  • "int num" 694件該当
  • "int mNumOf" 1件該当
  • "int value" 541件該当

sizeが圧倒的かとおもいましたが僕の中では意外にもcountを頻繁に使ってるね。
なにか困ったらcountかもしれないね。
ただ文脈上合わない場合というのもあるので、その用途に応じたものをチョイスするべきかな。


"private final" and "private static final"

  • "private final" は該当6,863件ほとんどがlower camel caseで、内mから始まるものは5,631件
  • "private static final" 該当9,724件のほとんどが「すべて大文字」。

これは勉強になるなぁ。privateであろうと定数は定数か。



ひといきつこうか

定番の対決? static final VS final static

  • "static final" 29,321件
  • "final static" 1,107件

なるほど。


public static メソッド

  • lower Camel Case


switch文

  • 2,237件該当

これほんま勉強になるわ。

  • caseに使うのはstatic finalな定数



m接頭で始まるメンバ変数参照にthisをつかってるもの。

  • 検索途中で分かったがmはthisを使わないためのものじゃない。thisだと早くなるとかそういうものか。



mIsを探せ!

  • 585件該当ちなみに private boolean is◯◯は706件で private boolean mIsは380件

mIsじゃなくてisでええんでね?


多分これだけじゃ不十分で、より調べる対象を広げたりさらに突っ込んだ内容を確認する必要がある。
そのうち第二弾ができたらやる。

自分としてはかなり勉強になった。とくに命名規則には関係ないswitch文で必ず使われる定数の使い方が目からうろこだった。