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


どうも、スィンです。

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

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

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

今回はここまで!

ではでは!

自分も使う人も毎日楽しくなるアプリを制作。趣味は楽器演奏、映画・アニメ・ドラマ鑑賞とゲーム。

Windowsアプリ、Webアプリ、クラウドシステム構築などの業務システムエンジニアとして15年以上の経験を積んで独立。

システムやアプリ制作、Webサイト構築等のご相談、取材依頼は「お問い合わせ」からご連絡下さい。アプリを一緒に作りたいエンジニア、デザイナーさんは @iam_o_sin までご連絡下さい。

0

Leave a comment

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

*

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