ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net (131レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

59
(3): デフォルトの名無しさん [] 2021/03/28(日) 20:18:17.69 ID:AfIP7Kkq(1/4) AAS
ふらっと C#,C♯,C#(初心者用) Part150
2chスレ:tech

>>44-50

横から便乗で質問ですけど、
「いつか使うだろう」とインターフェースや継承関係を作っておく自体は推奨されることですか?

例えば、インターフェースや継承関係が無くても、直付けで作れてしまう訳じゃないですか。
むしろ、そっちの方が楽(というか、直付けでしか作れない人もいますし)。
ただし、物事が複雑化してきたときに、インターフェースや継承関係があると拡張しやすい。

これって上級者なら、(どんなに小さいプログラムだろうが)常にインターフェースや継承関係を作った方がいいのか、
それとも、ケースバイケースで「このぐらい複雑ならインターフェースや継承関係が要る」という判断基準に則って作った方がいいんですか?
61: デフォルトの名無しさん [] 2021/03/28(日) 20:45:56.60 ID:AfIP7Kkq(2/4) AAS
>>60
60(1): デフォルトの名無しさん [sage] 2021/03/28(日) 20:34:19.07 ID:XhrJbcfF(1) AAS
ドキュメントの用意ができるかできないかでも違ってきそうな気がする
なるほど、その回答は暗に「ケースバイケース」と言っていますね。
64: デフォルトの名無しさん [] 2021/03/28(日) 21:53:06.83 ID:AfIP7Kkq(3/4) AAS
>>62-63
なるほど、納得です。

一番合理的な意見でよかったです。

インターフェースや継承についての本やネットの記事では、
なんでもかんでも拡張できるように書くような勢いで、
しかも読んでる最中は確かにそうすべきかなと思ってました。
でも、実際に使おうとすると、どこまでやっていいのか迷ってました。
YAGNIに沿って「必要になってから作る」でいいんですね。
68
(2): デフォルトの名無しさん [] 2021/03/28(日) 22:54:02.07 ID:AfIP7Kkq(4/4) AAS
>>65-67
> 継承関係に関しては明確に必要な場合か
> 事前のアーキテクチャ設計方針で決まってる場合以外には使わないかな

これは明確な回答ですね。
つまり、例えば大学の学生証管理システムだとすると、Studentクラスで直にコーディングして、
後にアーキテクチャ設計方針がひっくり返されて「教授も身分証作ったから足してくれ」となった場合は
Person→Student, Person→Professorのような継承関係にするわけですね。
それまでにStudentに直に結び付けて作ったメソッドなどは一部作り直しになりますが、そこは許容するスタイルですね。

> インターフェースに関しては依存性の方向を変えたかったり
> 結合度を下げたかったりする明確な理由があれば良いと思う

> あるライブラリを後で違うものに入れ替えられるように作っておきたい

…と言われると、依存性は低い方が良いに決まっていますし、
あるライブラリを後で違うものに入れ替えられるように作っておいた方が良いに決まっていますよね?
そして、未来は予測できないので、その工夫が後に活きてくるか無駄になるかは不明です。
つまり、

> 入れ替え可能にする手間や増加するコードの複雑性と
> 呼び出し側の変更なく入れ替えが可能な柔軟性とのトレードオフ

つまり、工数として、
 入れ替え可能にする手間や増加するコードの複雑性 > 呼び出し側の変更なく入れ替えが可能な柔軟性

 入れ替え可能にする手間や増加するコードの複雑性 < 呼び出し側の変更なく入れ替えが可能な柔軟性
かは不明です。

このトレードオフをどのように決めていますか?
>>62-63さんは「今、不要な機能なら要らない」という指標を示して下さいました。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.526s*