問題タブ [package-design]
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.
oop - データベースガイの質問:オブジェクト指向設計理論?
私は長い間データベースの設計に携わってきましたが、最近はC#でも働いています。OOは私には理にかなっていますが、私はOOデザインの深い理論に十分な根拠があるとは感じていません。
データベースの世界では、データベースの構造を設計する方法について多くの理論があり、主な概念は正規化です。正規化は、データベースの構造を直接操作し、データベース内のエンティティの配置方法をある程度指示します。
オブジェクト指向プログラムの構造を設計する方法の背後にある同様の概念はありますか?
私が到達しようとしているのは、開発者を特定の問題の解決策の「正しい」設計に自然に導く1つ以上の基礎となる理論的原則です。
詳細はどこで確認できますか?
読むべき頼りになる作品はありますか?
アップデート:
回答してくれた皆さんに感謝します。私が読んでいることは、「オブジェクト指向デザインの大統一理論」は存在しないと言っているようですが、重要な原則がたくさんあります。それらは主にデザインパターンによって例示されています。
回答ありがとうございます:)
oop - OOP のルールはありますか?
最近、OOP(Java)には9つのルールがあると聞きました。私が知っているのは、抽象化、ポリモーフィズム、継承、カプセル化の 4 つだけです。OOP に関するその他のルールはありますか?
reusability - コード ライブラリをどのように整理していますか?
特に再利用可能なコンポーネントに関して、人々がコード ライブラリをどのように編成しているかに興味があります。以下ではオブジェクト指向の用語で話していますが、他の種類の言語のライブラリをどのように編成しているかにも興味があります。
例えば:
- あなたはすべてのクラス ライブラリ プロジェクトに固執しますか? それとも、すべてを 1 つのプロジェクトにまとめることを好みますか?
- ビルド済みの DLL を再利用しますか、それとも以前のプロジェクトの個々のクラスを現在の作業に含めますか? 個々のクラスの場合、それらをプロジェクト間で共有して、すべてが最新の状態に保たれるようにしますか? それとも分岐を許可しますか?
- 再利用可能な要素の大きさは? 彼らはどのくらい集中していますか?彼らはどのように集中していますか?
- 優先プラクティスを通じて、どのレベルの再利用を達成できますか?
等
編集
ここで特定のガイダンスを求めているわけではありません。人々の考えや実践に興味があるだけです。単一のプロジェクト内ではなく、異なるプロジェクト間でのコードの再利用に特に関心があります。(残念ながら、ここでの「プロジェクト」の使用は誤解を招きます。つまり、Visual Studio の意味でのプロジェクトではなく、顧客のために実施される実際のプロジェクト間での再利用を意味します。)
c# - 循環依存
2つのプロジェクトがあります。
Project#2にはProject#1への参照があります
Project#1でProject#2を参照する必要がありますが、vs.netは循環依存について不平を言っています。
これから抜け出す方法はありますか?
architecture - アーキテクチャ: 複数のレイヤーを作成する方法の原則
私たちが知っているように、ほぼすべての複雑なアーキテクチャには複数のレイヤーが含まれています。管理システムでは、あまり考えなくても、データ アクセス層、ビジネス ロジック層、およびプレゼンテーション層を簡単に思いつくことができます。複数のレイヤーを作成する方法について明確な原則があるかどうかを知りたいです。PS: 管理システムに限ったことではありません。
java - 機能ごとのパッケージは良いですか?
最近、機能ごとに Java コードをパッケージ化するという Javalobby の投稿http://java.dzone.com/articles/how-ching-java-packageに出会いました。
このアイデアは気に入っていますが、このアプローチについていくつか質問があります。質問をしましたが、満足のいく回答が得られませんでした。StackOverflow の誰かが私の質問を明確にしてくれることを願っています。
コーディング中にパッケージ間を移動する時間を大幅に短縮し、関連するすべてのものを 1 つの場所 (パッケージ) にまとめる機能別パッケージのアイデアが気に入っています。しかし、異なるパッケージ内のサービス間の相互作用についてはどうでしょうか?
ブログ アプリを構築していて、すべてのユーザー関連の操作 (コントローラー/サービス/リポジトリ) をcom.mycompany.myblog.users
パッケージに入れているとします。また、すべてのブログ投稿関連の操作 (コントローラー/サービス/リポジトリ) がcom.mycompany.myblog.posts
パッケージ化されています。
ここで、彼が投稿したすべての投稿とともにユーザー プロフィールを表示したいと思います。myblog.posts.PostsService.getPostsByUser(userId)
から電話する必要がありmyblog.users.UserController.showUserProfile()
ますか?
パッケージ間のカップリングはどうですか?
また、機能ごとのパッケージについて読んだところはどこでも、誰もがそれが良い習慣だと言っています。では、なぜ多くの本の著者やフレームワークでさえ、層ごとにグループ化することを推奨しているのでしょうか? 知りたいだけです:-)