数値リテラル、文字列リテラルは原則全て定数化するかenumにする。(定数にグループ性があるものはenumにする。) 1


どうも、スィンです。

では、例文から。
例文は今回の内容以外にもリファクタリングした方がいい箇所が多々ありますが、無視してください。
func1() がオリジナルで、func2() と func3() がリファクタリングしたものです。

func1() では value に直接文字列 “OK” を代入し、 equals() により “OK” という文字列と等しいかを判定しています。このようにコードに直接書かれた文字列を「文字列リテラル」といい、数値は「数値リテラル」といいます。リテラルがコード中に存在すると、入力ミスにより「等しいはずなのにfalseが帰ってくる」と、実装したプログラマはバグを産んだ自覚もなく「自分は間違ってない!」という妄想からデバッグにハマることが有ります。また、システムに変更が必要になった場合、同じことをが書いてある箇所をすべて修正しなくてはいけなくなり、修正の際にまたバグを産んでしまう可能性が高いです。よって、これらのリテラルを全て排除しましょう。

通常はリテラルを func2() のように定数化、つまり static final フィールドにします。でもこれって、多分フラグみたいに使ってて、”OK” でなければ “NG” か null か空文字みたいな利用のされ方をしていると思います。それでしたら値の種類が想定されているので func3() のように enum にして switch で処理を分岐したほうががよいでしょう。

今回はここまで!

ではでは!

自分も使う人も毎日楽しくなるアプリを制作。よくしゃべる人。

Windowsアプリ(医療システムや販売管理)、Webアプリ(グループウェアや中古車販売)、クラウドシステム構築など、業務システムのエンジニアとして15年以上の経験を積んで独立。

朝日新聞で紹介されたTwitterアプリ「Tweecha」や新アプリ「Txiicha」、簡単に割引や消費税計算ができる電卓「電卓っちゃ」、脳トレゲームなどを制作。

趣味は楽器演奏、映画・アニメ・ドラマ鑑賞とゲーム。

アプリを一緒に作りたいエンジニア、デザイナーさんなどは @iam_o_sin までご連絡下さい。

システムやアプリ制作、Webサイト構築等のご相談、取材依頼は「お問い合わせ」からご連絡下さい。

0

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

One thought on “数値リテラル、文字列リテラルは原則全て定数化するかenumにする。(定数にグループ性があるものはenumにする。)