- PR -

Checkstyle [Class Design -> Design For Extension] について

1
投稿者投稿内容
まさ
ベテラン
会議室デビュー日: 2002/11/15
投稿数: 74
投稿日時: 2007-11-06 22:21
まさです。

Checkstyle の項目 [Class Design -> Design For Extension] は
「メソッド〜は拡張するように設計されていません。」
とのことですが、どのような形にすると「拡張するように設計されたもの」になるのでしょう?

そもそも、オーバライドするという行為自体が既に「拡張するように設計されていない」ということ?
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-07 13:56
> どのような形にすると「拡張するように設計されたもの」になるのでしょう?
これの正反対なら、CheckStyleから「拡張するように設計されていない」と叱られるんでしょう?:
The exact rule is that nonprivate, nonstatic methods of classes that can be subclassed must either be
* abstract or
* final or
* have an empty implementation
あなたのスーパークラスのメソッドが:
・abstractでない
・finalでない
・空実装でない
(キビシイ条件ですね。)





[ メッセージ編集済み 編集者: ranco 編集日時 2007-11-07 13:59 ]
まさ
ベテラン
会議室デビュー日: 2002/11/15
投稿数: 74
投稿日時: 2007-11-07 20:36
どもども。まさです。

abstract はサブクラスに実装を強制するものなので良しとして、
空の実装は「拡張するように設計されたもの」になるんでしょうかネェ。。。

自分的には、final つけたらそれこそ拡張できないじゃんって気がしてしまうんですが。。。(ranco さんに対してじゃなく Checkstyle に対する愚痴ね)

「拡張するように設計されていません」じゃなくって、
「拡張できる状態にすべきではありません」だったら納得いくんですけどね。
そういう意味なのかな?
1

スキルアップ/キャリアアップ(JOB@IT)