solid-principles

    1

    1答えて

    スーパークラスからプロパティを設定するために抽象クラスを拡張することはできますか(JavaおよびSOLIDプリンシパルの場合)。 私が達成したいのは、p1の内容によってp2に異なる値を適用することです。また、p3の値はp2の値に依存します(メニューをカスケードするときも同様です)。 このシナリオをデザインパターンで処理できますか? public interface Iface{ publ

    3

    1答えて

    私はなぜJavaで配列の共分散が悪いのかを読んでいました(Why are arrays covariant but generics are invariant?)。 DogがAnimalのサブタイプである場合、Dog[]はAnimal[]のサブタイプです。このようなことを行うことができますので、これは問題です: Animal[] animals = new Dog[1]; animals[0]

    4

    3答えて

    私は共分散とLSPを理解しようとしています。 this questionから、C#は戻り型共分散をサポートしていないことがわかります。しかし、Liskov substitution principleは戻り値型に共分散を課します。 この原則をC#で適用することは不可能ですか?それとも私は何かを忘れてしまったのか?

    2

    1答えて

    私はApproveCheckメソッドを以下のBillingクラスに持っています。このメソッドは、注文番号を持つ顧客から受け取った小切手を承認し、それを承認する注文と照合します。これらのクラスには、テストするビジネスロジックがなく、直接データベースと対話するため、インターフェイスがありません。 これはSOLIDの原則に従っていますか?これらのクラスはテストのためにインデントされていないか、バックエン

    0

    1答えて

    これは愚かな/ばかな質問かもしれませんが、とにかく、これは問題ではありません、基本的にはクラスからの結果を表示するための最良の適切な方法メインウィンドウに移動します。 今私は私が必要なものを紹介します、そして、私はボタンのクリックになるようにその間違った方法で、 を知って、私の現在の知識でこれを解決する方法を私はこれを行う: を private void btnSend_Click(object

    0

    1答えて

    私はインスタンスという名前のクラスを持っていますが、クラスは5以上の値を受け取るべきです。 コンストラクタに(3〜4)より多くの変数を渡すと、デザインが悪いことがわかります。 この数の変数をコンストラクタに渡すためのベストプラクティスは何ですか? 私の最初のオプション: class Items { protected $name; protected $description

    4

    1答えて

    私は、実行するクラスを含むオブジェクトのデータベースが必要な状況に陥っています。 id | Description | pricingClass 1 | "static pricing" | staticDeliveryPrice.class 2 | "Dynamic pricing" | dynamicDeliveryPrice.class これは、自分のコーディングに柔軟性を持たせる

    -1

    2答えて

    に違反しないが、私はそうのようなクラスを持っていると言います しかし、別の意味で、それは変更する様々な理由がたくさんあります。configの名前が変更され、新しい設定が追加、設定、削除、変更の種類を返し、設定などなど に必要な検証はのためのクラスがあるはずそれぞれの設定は単一の責任を満たすか、あまりにも遠すぎますか?

    0

    1答えて

    私は単一の具体的なクラスを持っています。 インターフェイスを作成する必要はありません。これは、1つの実装しかないためです。 これは、より高いレベルのクラスにValidatorのインスタンスを注入する際に、逆転原理の依存性に失敗しますか? 私はこのクラスのためのインターフェイスを使用していた場合、それは名前の問題

    0

    2答えて

    多くのロギング情報(時間など)を持つメソッドの呼び出しのロギングを実装する必要があります。私はこれのようにすることができます: var stopwatch = new Stopwatch(); OCRResult ocrResult = await ocr.GetTextAsync(dataStream, filename, language); stopwatch.Stop(); // l