問題タブ [responsibility]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
initialization - クラス内でのオブジェクト作成の責任
これは初心者の質問のように聞こえるかもしれません。
デフォルトのコンストラクターが呼び出されたときに、MyClass.myObjectsの作成/初期化を担当するのは誰ですか?
- MyClassのコンストラクタ。
- MyClassのユーザー。
c++ - ポインタとオブジェクト指向プログラミング
ポインタはオブジェクト指向プログラミングの概念とどのように連携しますか?
私が理解しているように(そして私はID-10Tとして分類されていることを認識してください)、OOPの主な信条は、クラス内に含まれる管理責任(メモリ/実装など)の封じ込めと維持です。しかし、オブジェクトのメソッドがポインタを返すとき、オブジェクトを「ポップ」しているように見えます。今、誰かが心配する必要があるかもしれません:
- 彼らはポインタの関連オブジェクトを削除することになっていますか?
- しかし、クラスがまだオブジェクトを必要としている場合はどうなりますか?
- 彼らはオブジェクトを変更できますか?もしそうなら、どのように?
const
(私はこの問題を解決するかもしれないと認識しています) - など...
オブジェクトのユーザーは、クラスがどのように機能するか、およびクラスがユーザーに何を期待するかについて、さらに詳しく知る必要があるようです。それは、OOPに直面して平手打ちされているように見える「猫が袋から出された」シナリオのように感じます。
注:これは言語に依存しない質問であることに気付きました。ただし、C++環境で作業しているときに質問をするように求められました。
ruby - リファクタリング:いつリファクタリングを停止しますか?
私は、クラスまたはインスタンスメソッドを分割し、それを独自のクラスに移動することに非常に執着しています。多くの場合、単純な「helloworld」メソッドは多くのクラスに分割されます。
たとえば、
に分割されます
そして時々それは不必要に感じます。このようにして、何か良いことはありますか?
コードのリファクタリングを停止するのはいつですか?リファクタリングされたコードのようなものはありますか?
smtp - 電子メールが SMTP で受信された後、さらに何が起こりますか? 電子メールを保存するのは誰ですか、それは SMTP ですか?
私はカスタマイズされた SMTP サーバーを開発しています。これもほぼ完成しています。他の SMTP が私の SMTP と通信できるようになり、それらが私に送信したものを正常に受信できるようになりました。しかし、受信した電子メールを保存するのはSMTPの責任であるか、受信した電子メールのこれらの値(to、from、dataなど)を保存する他のプログラムに受信した値を渡す必要があると考えています。もしそうなら、そのプログラムは何ですか?そうでない場合、受信した値を保存するのは SMTP ですか??
design-patterns - パターンは疎結合にどのように役立ちますか?
私はJavaパターンが初めてで、それがREAL WORLDにどのように適合するかを理解しようとしています. パターンに関するほとんどのサイトや本は、非プログラマーによって書かれているようです。
パターンが結合にどのように役立つかを定義しようとしていますが、これが今のところ私の定義です。私が知りたいのは、どのパターンが疎結合に本当に役立つか、そしてそれらは努力する価値があるかということです。また、これまでのところ私の定義/理解は正しいですか:
「カップリングとは、2 つ以上の異なるオブジェクトが相互にアクセスおよび/または相互作用する度合いです。」
2 つのオブジェクト間の密結合:
参照/インスタンス化 : 多くの場所で、一方または両方のオブジェクトで、他のオブジェクトへの多くの敬意 (多対多の参照)
複雑さ : 通常、多くのパラメーターが関数へのアクセス、またはさまざまな関数へのアクセスのシーケンスを必要としました。関連オブジェクトの共通インターフェースはありません。
責任:アクセスされているオブジェクト、または別のオブジェクトで行うべき作業を行う。ネストされた関数に直接アクセスする。
パフォーマンス : 密結合が必要になる場合がある最大の理由ですが、最小化する必要があります。
2 つのオブジェクト間の疎結合:
参照/インスタンス化: 少ないが、1 つのオブジェクトに少なくとも 1 つの参照があるが、両方にはない (1 ~ 少数の参照)
役立つパターン: Factory、Singleton、Builder、Composite複
_責任 : オブジェクトが実行する責任がある作業のみを行い、1 レベル下の機能にのみアクセスしようとします。
役立つパターン: デコレーター、責任の連鎖、MVCパフォーマンス : パフォーマンスが必要な場所を特定し、それらのクラスを一緒に保ちます。定義ごとに、密結合されたネストされたクラスとしても構いません。
structure - パラメータ検証を実行する場所
関数とその関数の呼び出し元があるとしましょう
パラメータの検証はどこで行うべきですか?
かもしれない
またはそれは可能性があります
何が良いですか?または、状況に応じて、いつ何を使用すればよいですか?
おそらく、これの延長は、いつやるべきかということでもあります
対
architecture - データベースに対するマルチパート アプリケーションの責任
Webアプリケーション、データベース、およびWebアプリケーションによって作成された行を処理するバックグラウンドで実行されるプログラムで構成されるプロジェクトがあります。どちらのプログラムもデータベースを操作し、必要な情報を保存します (両方のアプリケーションが使用するテーブルを使用)。
状況を少し明確にするために、3 つのテーブル A、B、および C を含むデータベース (アプリケーションで排他的に使用) があるとします。
- A は私の webapp でのみ使用されます。
- C は他のプログラムでのみ使用されます。
- Bには、webappのみが必要とする列と、他のプログラムが使用する列、そしてもちろん両方で使用される列が含まれています。
プロジェクト全体を次のように考えることができます。
- ユーザーがウェブアプリから注文する
- webapp は注文をデータベースに保存します
- 他のプログラムがデータベースにアクセスし、注文を処理します
- 処理中にエラーが発生した場合、これらもデータベースに保存されます
これにより、次の疑問が生じます。
- データベース内のテーブルの管理を担当するプログラムはどれですか?
- すべてのプログラムは、独自に必要なテーブル自体を管理する必要がありますか?それとも、データベースが中央から管理されるようにすべてを管理する必要がありますか?
- 両方のアプリケーションが必要とするテーブルを誰が管理する必要がありますか?
- または、とにかくデータベース構造がそれほど頻繁に変更されるべきではないため、データベースを自分で管理する必要があります
側面の情報: DBMS はpostgres 9.3、webapp は playframework を使用し、 anormを介してデータベースにアクセス(現在、evolutions を使用してデータベースを管理)、および他のプログラムは scala で作成され、 slick を使用してデータベースにアクセスします。
c# - データベースからデータを取得する役割を担うクラス
インターフェイス (IDataSource) から継承するデータベース クラスと、ユーザーを表すクラスがあります。
私のギアを本当に磨くのは、どのクラスがデータベースからユーザーデータを取得する責任があるかです-ユーザークラスがクエリを実行するためにデータベースクラス/ IDataSourceのインスタンスを必要とするメソッドを定義する必要があるか、データベースクラスがメソッドを実装する必要がありますユーザーデータを受け取り、ユーザーオブジェクトを返す?
これは単なる一般的な質問であり、役立つ回答を読むことを楽しみにしています。
編集:
たぶん、以下がどのように機能するかを説明してください:
IValidator はどのように見えるでしょうか?
私の知る限り、それはどういうわけか次のようになります。
「連絡先」をインターフェイスのパラメーターとして設定することはできません。そうしないと、インターフェイスを実装するすべてのクラスで、パラメーターとして連絡先が必要になります。
コンパイラーがパラメーターの型について不平を言うことなく、「オブジェクト」をパラメーターとして定義することは可能ですか?
@ Active Records 対リポジトリ - 賛否両論?
私が見つけた唯一の解決策は次のとおりです。
または、複数のクラスで機能させる別の方法はありますか?
oop - コード設計: オブジェクト データの変更を担当するのは誰ですか?
作業するデータ構造 (画像など) があると仮定すると、それをさまざまな方法で前処理および後処理して、さらなる処理手順を容易にします。C++ のような OOP 言語でこの責任を実装する最良の方法は何ですか?
さらに、固有の複雑さを伴うさまざまな処理アルゴリズムが多数あると仮定すると、それらを専用のクラスにカプセル化する可能性が非常に高くなります。これは、アルゴリズムの実装が、データが処理されたことを示すために、データに何らかの情報を外部的に設定する必要があることを意味します。また、処理されたことはデータに関連付けられた情報のように見えるため、データオブジェクト自体が独自に決定して設定する必要があるため、それは私にはきれいなデザインのようには見えません。
また、複雑なアプリケーションでは非常に一般的なエラーの原因のように見えます: 誰かが別の処理アルゴリズムを実装したり、データにフラグを適切に設定するのを忘れたり、アプリケーションのまったく異なる部分の何かが期待どおりに機能せず、誰かが多くのエラーを持ったりします。エラーを見つけるのが楽しい。
誰かがこのような sth を実装するための適切で失敗しない方法の一般的な構造の概要を説明できますか?