【まとめ記事】アプリの品質を保つため、Javaソースコードを書くための工夫

アプリの不具合を防ぎたいから、品質が良いソースコードを記述したい。

Javaソースコードを正しく書くための、ちょっとした工夫について、ご紹介しています。

  • 変数の寿命を決める書き方。
  • 肯定的な条件を優先して条件分岐する書き方。
  • クラス名の付け方。

品質を意識してソースコードを書くようにしたら、アプリの品質が良くなります。

Javaソースコードを書くための工夫

Javaソースコード

どんなに気をつけてソースコードを記述していても、うっかり間違ってしまう場合があります。

ソースコードに「間違い」があると、アプリが仕様通りに動きません。

アプリの品質を保つためにも、なるべく正しくソースコードを記述したいです。

ソースコードを、少しでも正しく書くための工夫について、ご紹介したいと思います。参考にしていただけたら幸いです。

処理

正常処理

ソースコードにおいて「正常処理の流れ」は、単純なほうがわかりやすいです。

例えば、if文の分岐処理が少ないほど、「処理の流れ」を理解しやすいと思います。

Javaソースコードを書くための工夫・正常処理

「正常処理の流れ」は、 なるべく上から下への垂直な一本の線、 左側にある線、 「長さ」が短い線 が良い、と思います。

例外処理

プログラム実行中に例外が発生した場合、多くの場合で、その例外に対処する必要があります。

ソースコードの「どの場所」で例外に対処するか、それぞれに応じたコードの書き方があります。

例外処理・Javaソースコードの書き方

例外処理の書き方について、以下の3通りがあります。 1.メソッド内に例外を通知する。 2.例外を他のメソッドに通知する。 3.例外処理を中止する。

変数

変数の寿命

変数の寿命は、中カッコ { } を使用して決めることができます。

中カッコを使って、変数の寿命(有効範囲)をコントロールすることは、変数が間違った場所で使用されるのを防ぎます。

これは、ソースコードの品質を保つのに役立ちます。

変数の寿命・Javaソースコードの書き方

中カッコ { } を使用して、変数の寿命(有効範囲)をコントロールできます。 適切に有効範囲を決めることで、変数が間違った場所で使用されるのを防げます。

インスタンス変数

クラス内に定義してあるインスタンス変数については、インスタンス変数の値を操作する処理が、同じクラス内だけにあると良いです。

例えば、インスタンス変数の値を設定する処理を理解したい場合、同じクラス内のメソッドだけ見れば良いからです。

インスタンス変数・Javaソースコードの書き方

インスタンス変数の値を操作する処理は、インスタンス変数宣言の近所にあると良いです。 そしてインスタンス変数の値を操作する処理は、一つのメソッドにまとめると良いで…

条件分岐

ユーザ操作が作り出した情報

if文に指定する条件は、通常、ユーザ操作によって生み出された情報です。
例えば、ユーザーがマウスをクリックした、という情報です。

if文に指定する条件は、アプリ実行時に作成される情報と言えます。

その他の場合

また、if文で処理を分ける場合、「その他の場合」においてログ情報を出力しておくと、デバッグ時に役立ちます。

「その他の場合」は、アプリの仕様において絶対に実行されない場合です。
もしも「その他の場合」が実行されたら、ソースコードに「間違い」があると言えます。

条件分岐・Javaソースコードの書き方

if文に指定する条件は、通常、ユーザ操作によって生み出された情報です。 次のようなものです。 ユーザのマウス操作、キーボード操作、画面をタッチによって、生み出され…

条件分岐の距離

if文とelse文の距離が近いほど、if文の分岐処理を一覧できます。
よって「処理の流れ」を一覧できてわかりやすい、と思います。

if文からelse文までの距離を短くする方法として、それぞれの場合で行なう処理を、一つのメソッドにまとめる方法があります。

条件分岐の距離・Javaソースコードの書き方

if文とelse文の距離が近いほど、if文の分岐処理を一覧できます。よって、「処理の流れ」がわかりやすいです。

肯定文の条件分岐

if文の条件指定において、肯定文で条件を書くほうが「わかりやすい」と思います。
その場合、肯定的な条件を優先する書き方があります。

例えば、

  • 「;セミコロンだけ、つまり何もせず処理を続ける」

という書き方があります。

if (super.action.equals("copy")){
    ;  //何もせず処理を続ける
}
else{
    super.servlet.log("無効なアクション=" + action);
    return errors;
}
肯定文の条件分岐・Javaソースコードの書き方

if文において、肯定的な条件を優先する書き方があります。 肯定的な条件が成り立つ場合、セミコロン(;)だけを記述する書き方です。

名前の付け方

クラス名の付け方

クラス名を名詞にすると、クラスの役割を「分類している感じ」がします。
よって、わかりやすいと思います。

サブクラス名の付け方として、サブクラス名を

  • 「サブクラスの役割名 + スーパークラス名」

にすると、わかりやすいと思います。

クラス名の付け方・Javaソースコードの書き方

クラス名は名詞にします。 クラス名を名詞にすると、クラスの役割を「分類している感じ」がして、わかりやすいです。

単語を使って変数名を付ける事

一般的な英単語の意味は、既存の英語辞書などで調べやすいです。

なので一般的な単語を使って変数名を付けると、その単語の意味から、「変数の働き」を理解するのに役立ちます。

例えば変数名がmappingの場合、「キー」と「値」のマッピングを予想できます。

単語を使って変数名を付ける事・Javaソースコードの書き方

一般的な単語の意味は、既存の辞書などで調べやすいです。 なので一般的な単語を使って変数名を付けると、その単語の意味から、「変数の働き」を理解しやすいです。

setterメソッド・getterメソッド

インスタンス変数の値を「設定するメソッド」「取得するメソッド」は、よく使われます。

メソッドの名前については、以下の単語を使うことが多いです。

  • 「値を設定するメソッドの名前」は、英単語のsetを使う。
  • 「値を取得するメソッドの名前」は、英単語のgetを使う。
「setterメソッド・getterメソッド」Javaソースコードの書き方

インスタンス変数の値を「設定するメソッド」「取得するメソッド」は、よく使われます。 メソッドの名前については、英単語のset、getを使うことが多いです。

メソッド再利用

クラス継承によるメソッド再利用

メソッドを再利用する方法の一つに、クラスを継承する方法があります。

サブクラス側から、スーパークラスで実装されているメソッドを再利用できます。

クラス継承によるメソッド再利用・Javaソースコードの書き方

クラスを継承する方法を用いたら、多くのメソッドを再利用しやすいです。 実際にクラスを継承するようにしたら、希望するメソッドを再利用できるでしょう。

抽象クラスを使ってメソッド再利用

抽象クラスを使ってメソッドを再利用する、という方法があります。
抽象クラスは、「メソッドの宣言」と「メソッドの実装」を持つクラスです。

この抽象クラスを継承することによって、抽象クラスが既に持っているメソッドを再利用できます。

抽象クラスを使ってメソッド再利用・Javaソースコードの書き方

抽象クラスは、「メソッドの宣言」と「メソッドの実装」を持つクラスです。 この抽象クラスを継承することで、抽象クラスが既に持っているメソッドを再利用できます。

「変数のメソッド呼び出し」でメソッド再利用

メソッドを再利用する方法に、クラス内に定義してあるインスタンス変数(メンバ変数)のメソッドを呼び出す方法があります。

クラスAとクラスBの「結び付きは弱い」と判断した場合、「インスタンス変数のメソッド」を呼び出してメソッドを再利用する、と考えました。

「変数のメソッド呼び出し」でメソッド再利用・Javaソースコードの書き方

クラス内に定義してあるインスタンス変数から、メソッドを呼び出す方法があります。 インスタンス変数からメソッドを呼び出すことで、再利用したいメソッドを限定できます…

配列管理クラスの要素の型

配列管理クラスの要素の型(クラス)についてです。

配列管理クラスでは、任意の型の要素を管理できることが多いです。

しかし配列は、ただ1種類の型――同じ種類の型――の要素を管理する仕組みだと思います。

よって要素の型は、ただ1種類だけ管理すると良いです。

配列管理クラスの要素の型・Javaソースコードの書き方

配列は、同じ型の要素を管理する仕組みです。 要素がString型なら、「String型の要素」だけを配列に追加します。

インタフェースと抽象クラスと具象クラス

インタフェースと抽象クラスと具象クラスには、「違い」があります。

  • インタフェースには、「メソッドの宣言」だけがあります。
  • 抽象クラスには、「メソッドの宣言」と「メソッドの実装」があります。
  • 具象クラスには、「メソッドの実装」があります。
インタフェースと抽象クラスと具象クラスの違い・Javaソースコードの書き方

それぞれの違いについて、「メソッドの宣言」と「メソッドの実装」に色を付けて比較しています。 「メソッドの宣言」または「メソッドの実装」において、個数に違いがあり…