問題タブ [friend]
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.
c++ - クラス設計とIDE:非メンバーの非フレンド関数は本当に価値がありますか?
SutterとAlexandrescuは、 「非メンバーの非フレンド関数を作成することを好む」というタイトルの(そうでない場合は)優れた本C ++ Coding Standardsのアイテム44で、クラスのメンバーに本当にアクセスする必要がある関数のみをそのクラスのメンバーにすることを推奨しています。メンバー関数のみを使用して記述できる他のすべての操作は、クラスの一部であってはなりません。彼らは非会員であり、非友人でなければなりません。議論は次のとおりです。
- クラスの内部にアクセスする必要のあるコードが少ないため、カプセル化が促進されます。
- 一部の関数がメンバーであるかどうかを毎回推測する必要がないため、関数テンプレートの作成が容易になります。
- クラスを小さく保つため、テストと保守が容易になります。
これらの引数には値がありますが、大きな欠点があります。IDEがこれらの関数を見つけるのに役立ちません。ある種のオブジェクトがあり、そのオブジェクトで使用できる操作を確認したい場合は、「pMysteriousObject->
」と入力してメンバー関数のリストを取得することはできなくなります。
クリーンなデザインを維持することは、最終的にはプログラミング作業を楽にすることです。しかし、これは実際に私のものをはるかに難しくします。
だから私はそれが本当にトラブルの価値があるのだろうかと思っています。どのように対処しますか?
java - JavaでC++の「友達」の概念をシミュレートする方法はありますか?
別のパッケージ内のクラスの非パブリック メソッドにアクセスできる Java クラスを、別のクラスのサブクラスにすることなく別のパッケージ内に記述できるようにしたいと考えています。これは可能ですか?
c# - C# が C++ スタイルの「friend」キーワードを提供しないのはなぜですか?
C++ の friend キーワードを使用すると、をそのフレンドとしてclass A
指定できます。class B
これにより、 の/メンバーClass B
にアクセスできます。private
protected
class A
これが C# (および VB.NET) から除外された理由について、私は何も読んだことがありません。この以前の StackOverflow の質問に対するほとんどの回答は、それが C++ の有用な部分であり、それを使用する十分な理由があると言っているようです。私の経験では、私は同意しなければなりません。
もう 1 つの質問friend
は、C# アプリケーションで似たようなことを行う方法を実際に尋ねているように思えます。答えは通常、ネストされたクラスを中心に展開されますが、friend
キーワードを使用するほどエレガントではないようです。
元のDesign Patterns ブックでは、例全体で定期的に使用しています。
要約すると、なぜfriend
C#に欠けているのでしょうか?C#でそれをシミュレートする「ベストプラクティス」の方法は何ですか?
(ちなみに、internal
キーワードは同じではありません。アセンブリ全体内のすべてのinternal
クラスがメンバーにアクセスfriend
できるようにする一方で、特定のクラスに他の1 つのクラスだけに完全なアクセス権を与えることを可能にします)
c++ - 構造体テンプレートをフレンドとしてマークするにはどうすればよいですか?
次のようなコードがあります。
テンプレートに友情を与える正しい構文は何ですか?
c++ - C++ クラスの友人
私はそのようなコードをコンパイルしようとしています:
しかし、 get 'CCube::Position' は関数 main() で 3 回アクセスできません。クラスCPositionをCCubeの外で宣言して、将来CBallなどの新しいクラスで使用できるようにしたいのですが、継承を使用せずに機能させるにはどうすればよいですか。出来ますか :)?
よろしく、 PK
.net - 「フレンド」の使用-単体テストの宣言。悪いアイデア?
[もちろん、質問は特定の「友達」の実装に限定されません。関連する場合は、実装の詳細を自由に指摘してください]
未回答の質問を読んで、私はInternalsVisibleTo
属性に出くわしました:
現在のアセンブリ内でのみ通常表示されるタイプが別のアセンブリに表示されることを指定します。
MSDNのC#プログラミングガイドには、属性を使用して別のアセンブリでメソッドと型を使用できるようにする方法を説明する[フレンドアセンブリ]セクションがあります。internal
これを使用して、単体テストアセンブリで使用するライブラリをインストルメント化するための「非表示」インターフェイスを作成するのは良い考えではないかと思います。両方向(本番アセンブリでのテストコード、テストコードでの本番アセンブリに関する詳細な内部知識)での結合が大幅に増加するようですが、一方で、パブリックインターフェイスを乱雑にすることなくきめ細かいテストを作成するのに役立つ場合があります。
テスト時に友達宣言を使用した経験は何ですか?それはあなたの銀の弾丸でしたか、それとも死の行進を始めましたか?
php - フレンドまたは内部に相当する PHP
PHPに「友人」または「内部」に相当するものはありますか? そうでない場合、この動作を実現するために従うべきパターンはありますか?
編集: 申し訳ありませんが、標準の PHP は私が探しているものではありません。リングマスターがやったことの線に沿って何かを探しています。
バックエンドで C スタイルのシステム コールを実行しているクラスがあり、ジャグリングが面倒になり始めています。オブジェクト A には、オブジェクト B をパラメーターとして取り、それ自体を引数として渡すオブジェクト B のメソッドを呼び出す必要がある関数があります。エンド ユーザーが B のメソッドを呼び出すと、システムが崩壊する可能性があります。
c++ - OOPで友情を使うのが賢明なのはいつですか?
私は現在http://www.cplusplus.comチュートリアルを進めていますが、このセクションに出くわしました: http://www.cplusplus.com/doc/tutorial/inheritance.htmlフレンド関数の主題を扱っていますおよびC++のフレンド クラス。
私の質問は、いつプログラムを作成するときに友情を使用するのが賢明ですか?
私が得た唯一の手がかりは、オブジェクトを「複製」するフレンド関数を示す記事内の例でした。
java - Javaの「友達」に相当しますか?
ここで少し構造上の問題があります。
C++ では、「フレンド」という概念があり、このようなフレンド クラスはプライベート メンバーにアクセスできます。
だから、私はJavaアプリを開発していて、MVCアーキテクチャに準拠しようとしています. 「map_objects」間のグラフ接続を管理するコントローラー クラスがあります。このコントローラー クラスを使用して、これらの接続を実際に設定する DTO 'map_objects' の関数を非表示にしたいと思います。
(つまり、コントローラー クラスが接続を設定するために必要な機能を実装している場合でも、「ユーザー」は DTO のセッター/ゲッター関数に直接アクセスして、それらを自分で設定することができます。)
この点に関して、設計パターンやヒントはありますか? (または、私は完全にめちゃくちゃですか?)
DUPLICATE JavaでC++の「友達」の概念をシミュレートする方法はありますか?