问题标签 [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:非成员非友元函数真的值得吗?
在(否则)优秀的书C++ 编码标准第 44 条,标题为“Prefer writing nonmember nonfriend functions”中,Sutter 和 Alexandrescu 建议只有真正需要访问类成员的函数本身就是该类的成员。仅使用成员函数可以编写的所有其他操作不应该是类的一部分。他们应该是非会员和非朋友。论据是:
- 它促进了封装,因为需要访问类内部的代码更少。
- 它使编写函数模板更容易,因为您不必每次都猜测某个函数是否是成员。
- 它使类保持较小,从而使其更易于测试和维护。
虽然我看到了这些参数的价值,但我看到了一个巨大的缺点:我的 IDE 无法帮助我找到这些函数!每当我有某种对象时,我想看看它上面有哪些可用的操作,我不能再只输入“ pMysteriousObject->
”来获取成员函数的列表。
保持简洁的设计最终是为了让您的编程生活更轻松。但这实际上会使我的工作更加困难。
所以我想知道这是否真的值得麻烦。你怎么处理?
java - 有没有办法在 Java 中模拟 C++ 的“朋友”概念?
我希望能够在一个包中编写一个 Java 类,该类可以访问另一个包中的类的非公共方法,而不必使其成为另一个类的子类。这可能吗?
c# - 为什么 C# 不提供 C++ 风格的“朋友”关键字?
C++ 朋友关键字允许将 a指定class A
为其class B
朋友。这允许Class B
访问private
/的protected
成员class A
。
我从来没有读过任何关于为什么 C#(和 VB.NET)忽略它的内容。对这个较早的 StackOverflow 问题的大多数答案似乎都在说它是 C++ 的一个有用部分,并且有充分的理由使用它。根据我的经验,我不得不同意。
在我看来,另一个问题实际上是在问如何friend
在 C# 应用程序中做类似的事情。虽然答案通常围绕嵌套类,但它似乎不如使用friend
关键字那么优雅。
最初的《设计模式》一书在其示例中经常使用它。
所以总而言之,为什么 C# 中friend
缺少,以及在 C# 中模拟它的“最佳实践”方式(或方式)是什么?
(顺便说一句,internal
关键字不是一回事,它允许整个程序集中的所有类访问internal
成员,同时friend
允许您让某个类完全访问另一个类)
c++ - 你如何将结构模板标记为朋友?
我有这样的代码:
赋予模板友谊的正确语法是什么?
c++ - c++类朋友
我正在尝试编译这样的代码:
但 get 'CCube::Position' 在函数 main() 中无法访问 3 次。我希望在 CCube 之外声明 CPosition 类,以便将来可以在新类中使用它,例如 CBall :) 但是如何在不使用继承的情况下使其工作。是否可以 :)?
问候,PK
.net - 使用“朋友”声明进行单元测试。馊主意?
[当然,问题不限于特定的“朋友”实现,尽管如果相关,请随时指出实现细节]
阅读未回答的问题,我偶然发现了这个InternalsVisibleTo
属性:
指定通常仅在当前程序集中可见的类型对另一个程序集可见。
MSDN上的C# Programming Guide有一节Friend Assemblies描述了如何使用属性来允许对另一个程序集使用方法和类型。internal
我想知道使用它来创建一个“隐藏”接口来检测库以供单元测试程序集使用是否是一个好主意。它似乎在两个方向上都大大增加了耦合(在生产程序集中测试代码,在测试代码中对生产程序集的深入了解),但另一方面,它可能有助于创建细粒度的测试,而不会弄乱公共接口。
你在测试时使用友元声明是什么体验?是你的银弹,还是它开始了死亡行军?
php - PHP 等价于朋友或内部
php 中是否有“朋友”或“内部”等价物?如果没有,是否有任何模式可以遵循来实现这种行为?
编辑: 对不起,但标准的 PHP 不是我要找的。我正在寻找类似于 ringmaster 所做的事情。
我有一些类在后端进行 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 中的 setter/getter 函数来自行设置它们。)
在这方面是否有任何设计模式或提示?(或者我完全搞砸了?)