interface命名にも発想の逆転を

例えば,何らかの値をセットすることができる,という性格を表現するinterfaceを考えてみる。セットすることができるんだから,

public interface SomethingSettable { public void setSomething(int value); }

というように,〜Settableという名前にすることが多かった。

「何かをセットできる」というのは,対象クラスを外から見たときの観点と言える。なので,「何かをセットできる性質」というのは,そのクラスの性質の説明として,どうもしっくりこない。しかし,代案がわからないまま,数年が経過してしまった。

しかし,最近では,以下のように命名している。

public interface SomethingHolder { public void setSomething(int value); ・・・ }

「何かをセットできる」を「何かを持つことができる」というように発想の逆転をする。つまり「settable」から「holder」とすることで,僕の中では非常にすっきりした。「セットできる」というよりも,クラスの性格の説明としては正しい気がする。それに,「セットする」というだけの規定では通常役不足であり,セットされる値に付随する機能も同時に規定されることが望ましい。よって,holderという命名の方が自然と言えるのではないだろうか。

・・・ということを,JSFのEditableValueHolderインタフェースを見て思った。

このエントリーをはてなブックマークに追加

関連記事

2023年のRemap

Remapにファームウェアビルド機能を追加しました

Google I/O 2023でのウェブ関連のトピック

2022年を振り返って

現在のRemapと今後のRemapについて