
C#の開発を始めて日が浅いため、現場におけるお作法がわかりません。
現場におけるクラス・インターフェースを継承したメソッドのドキュメンテーションコメントの付け方に関する一般論についてお教えいただきたいです。
※基底クラス、及びインターフェースの抽象メソッドにはドキュメンテーションコメントの記述がある物とします。
※普段はJavaを使っている為、そこから引用している書いている部分があります。ご容赦下さい。
・抽象クラスにおけるインターフェースから継承した抽象メソッド(実装しない場合)
Javaとは違い、抽象クラスであってもインターフェースが持つの抽象メソッドを無視する事はできず、
public abstract修飾子を付けて抽象メソッドを定義してやる必要があるようなのですが、
この場合、ドキュメンテーションコメントは省略すべきでしょうか?
それとも、何かしら記述するべきなのでしょうか?(Javaで言うところの@inheritDoc等・・・そのような物があるかはわかりませんが)
・新たに実装を行う場合(抽象メソッドの実装等)
省略すべきでしょうか?
・既存の実装を拡張し、変更の影響は微小かつメソッド内のみで完結し、概要やその他のメソッドの責任において表記すべき内容に変化が無い場合
省略すべきでしょうか?
・既存の実装を拡張し、想定される例外の追加等、メソッド外にも影響を及ぼす大きな変更が入った場合
新たに完全なドキュメンテーションコメントを作成するべきでしょうか?
それとも差分以外は新たに作成すべきではないのでしょうか?
一般論と言っても規模や進め方によって様々だとは思いますが、
通念的に「心がけていくべき事」等あれば、是非お教え下さい。
最後に、この質問の趣旨からは外れるのですが、一つ追加で別の質問をさせてください。
私は何故抽象クラスがインターフェースの抽象メソッドを無視できないかがわかっておりません。
(インターフェース-インターフェース、抽象クラス-抽象クラスは無視できるのに)
敢えて明示的に定義を強要させている以上、何か理由あっての事だと思いますが、
それがわからず悶々村々としながら作業しております。
その理由をお教えいただけませんでしょうか。
宜しくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
オブジェクトを作るよりは使うことばかりが多い者ですが、後者の意味は私は以下のように解釈しています。
抽象クラスを実体化すると、メモリー上の空いた位置を先頭に、変数もメソッドもその先頭を基準に同じ位置に来る機械語プログラムが出現します。名前を変えて何度も実体化すれば、メモリー空間上にまるで間取りがそっくり同じプレハブ住宅が複数建つようなことになるのです。
従って抽象クラスの継承は子孫へ単一継承されますが、この子クラスを改造するのは各部屋の色を変えたり家具の配置を換えたりする程度のことなので、変更のない部分は定義しなくてもいいのです。
それに対して、インターフェースを住宅に例えると、まだ間取りも何も決まっていない庭や車庫のようなもので、とりあえず「庭だ」「車庫だ」といったとしても位置も大きさも不明な訳です。すなわち、メモリー上の大きさも相対的なメソッドの先頭番地も不明なのです。
だからこそ、インターフェースは、メモリー上の自由な位置に展開して多重継承できるのですが、その展開の具合を明示してやらなければ、コンピュータは自由に書き込めるメモリーが確定しないのです。
以上のようなイメージで、私はオブジェクト指向プログラミングを捉えています。ご参考になったでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# 「データが失なわれる可能性...
-
C#からDLLを呼びたいのですが・...
-
XMLデータの受信
-
C#の継承関係。
-
private継承はどう使う?
-
「ラッパークラス」の存在意義...
-
バックグラウンドでキー監視
-
中学のクラス数
-
「タイプ初期化子が例外をスロ...
-
0歳児の指しゃぶりに関して
-
インスタンス参照でアクセスで...
-
河合塾
-
VBスクリプトでテキストファイ...
-
javascriptからjavaを呼び出したい
-
エクセルVBAで、条件に一致する...
-
進学校通ってたんですけど、眼...
-
canvasで表示されてる画像を1...
-
河合塾のクラス分けについて
-
多人数のじゃんけんプログラム
-
ヒグマを撃退
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(vba)他のアプリケーションの右...
-
ASP.NETでの共通コードの書き方...
-
オーバーライドとラッパーの違い
-
「継承されたメソッドの可視性...
-
C# 「データが失なわれる可能性...
-
メソッドの引数にクラス名を渡す
-
ゲッターを使わないで変数にア...
-
C#からDLLを呼びたいのですが・...
-
c++でのヘッダーファイルの循環...
-
interface,extend,implementの...
-
抽象クラスをJUNITでテストする...
-
Javaのインスタンス化の構文の...
-
【C#】クラスのコンストラクタ...
-
Excel vbaのプログラムでガンマ...
-
VB DLLプロジェクトについて
-
単体テストのテストケースにて...
-
デバッグ時に「Source not found」
-
「ラッパークラス」の存在意義...
-
Commons-Discovery.jarとは?
-
Ftpでの帯域制限の設定方法につ...
おすすめ情報