minimize

Class Design

クラス設計関連のチェックを行います。

VisibilityModifier

private以外の識別子を持つフィールドをチェックします。
出来る限り、フィールドはprivateで宣言することが好ましいです。

packageAllowed

package(デフォルト)属性を持つフィールドを許可します。

protectedAllowed

protected属性を持つフィールドを許可します。

publicMemberPattern

チェック対象から外すpublicフィールド名を正規表現で設定します。

FinalClass

privateのコンストラクタしか持たないクラスが final として定義されているかどうかをチェックします。
ユーティリティクラスなど、publicコンストラクタを持っていないクラスの大半は
拡張される事を予期していません。
明示的に final で定義することで、これを抑制することが出来ます。

InterfaceIsType

メソッドが定義されていないインターフェイスをチェックします。
定数インターフェイス等はこのチェックに引っ掛かります。

allowMarkerInterfaces

マーカーインターフェイス(何も定義されていないインターフェイス)を許可します。

HideUtilityClassConstructor

ユーティリティクラスのコンストラクタがprivateとして宣言されているかどうかをチェックします。
public で定義されていると、

new EtcUtils().method()

こんな事をされかねません。

DesignForExtension

拡張(サブクラスでのオーバーライド)が許可されていないメソッドをチェックします。
例えば、Getter/Setter メソッドなどがこれに当てはまります。
この場合、このメソッドを final で定義するなどの処置を取る必要があります。

通常のプロジェクトではこれをチェックするのは厳しいでしょう。
ほとんどの Getter/Setter クラスはfinalで定義されていません。

MutableException

Mutable として設計されていない例外クラスをチェックします。

format

例外クラスを判定するクラス名を正規表現で設定します。
デフォルトは ^.*Exception$|^.*Error$ です。

Mutable とは、変更可能なオブジェクトのことです。逆は Immutable と呼びます。
例えば String クラスは Immutable です。
インスタンスを構築した後でその内容を変更することが出来ないからです。
StringBuffer クラスは Mutable です。

Mutable な例外クラスを使う目的はおそらく
例外発生後にそこに情報を追加したい場合などでしょう。
しかし、こういった目的で例外クラスを使うべきではありません。

ThrowsCount

メソッドのthrows数をチェックします。

max

1メソッドでthrowされる例外クラスの最大数を設定します。
デフォルトは 1 です。

throw数を減らすには、共通の例外基底クラスを作って
そのサブクラス例外を発生させるようにするなどの方法があります。
くれぐれも、Exception でキャッチしよう等というアンチパターンを
使わないように…

[コメント(0)]