dポイントプレゼントキャンペーン実施中!

C#の開発を始めて日が浅いため、現場におけるお作法がわかりません。
現場におけるクラス・インターフェースを継承したメソッドのドキュメンテーションコメントの付け方に関する一般論についてお教えいただきたいです。

※基底クラス、及びインターフェースの抽象メソッドにはドキュメンテーションコメントの記述がある物とします。
※普段はJavaを使っている為、そこから引用している書いている部分があります。ご容赦下さい。

・抽象クラスにおけるインターフェースから継承した抽象メソッド(実装しない場合)
Javaとは違い、抽象クラスであってもインターフェースが持つの抽象メソッドを無視する事はできず、
public abstract修飾子を付けて抽象メソッドを定義してやる必要があるようなのですが、
この場合、ドキュメンテーションコメントは省略すべきでしょうか?
それとも、何かしら記述するべきなのでしょうか?(Javaで言うところの@inheritDoc等・・・そのような物があるかはわかりませんが)

・新たに実装を行う場合(抽象メソッドの実装等)
省略すべきでしょうか?

・既存の実装を拡張し、変更の影響は微小かつメソッド内のみで完結し、概要やその他のメソッドの責任において表記すべき内容に変化が無い場合
省略すべきでしょうか?

・既存の実装を拡張し、想定される例外の追加等、メソッド外にも影響を及ぼす大きな変更が入った場合
新たに完全なドキュメンテーションコメントを作成するべきでしょうか?
それとも差分以外は新たに作成すべきではないのでしょうか?

一般論と言っても規模や進め方によって様々だとは思いますが、
通念的に「心がけていくべき事」等あれば、是非お教え下さい。

最後に、この質問の趣旨からは外れるのですが、一つ追加で別の質問をさせてください。
私は何故抽象クラスがインターフェースの抽象メソッドを無視できないかがわかっておりません。
(インターフェース-インターフェース、抽象クラス-抽象クラスは無視できるのに)
敢えて明示的に定義を強要させている以上、何か理由あっての事だと思いますが、
それがわからず悶々村々としながら作業しております。
その理由をお教えいただけませんでしょうか。

宜しくお願い致します。

A 回答 (1件)

オブジェクトを作るよりは使うことばかりが多い者ですが、後者の意味は私は以下のように解釈しています。


抽象クラスを実体化すると、メモリー上の空いた位置を先頭に、変数もメソッドもその先頭を基準に同じ位置に来る機械語プログラムが出現します。名前を変えて何度も実体化すれば、メモリー空間上にまるで間取りがそっくり同じプレハブ住宅が複数建つようなことになるのです。
従って抽象クラスの継承は子孫へ単一継承されますが、この子クラスを改造するのは各部屋の色を変えたり家具の配置を換えたりする程度のことなので、変更のない部分は定義しなくてもいいのです。
それに対して、インターフェースを住宅に例えると、まだ間取りも何も決まっていない庭や車庫のようなもので、とりあえず「庭だ」「車庫だ」といったとしても位置も大きさも不明な訳です。すなわち、メモリー上の大きさも相対的なメソッドの先頭番地も不明なのです。
だからこそ、インターフェースは、メモリー上の自由な位置に展開して多重継承できるのですが、その展開の具合を明示してやらなければ、コンピュータは自由に書き込めるメモリーが確定しないのです。
以上のようなイメージで、私はオブジェクト指向プログラミングを捉えています。ご参考になったでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!