7得票3回答
封装在框架时代的应用

在我之前从事的C++工作中,我们总是非常注意封装成员变量,并仅在必要时将其公开为属性。我们有非常特定的构造函数,以确保你在使用对象之前完全构造它。 现在,随着ORM框架、依赖注入、序列化等技术的出现,似乎更好的方法是只依靠默认构造函数并在属性中暴露关于类的一切,这样你就可以注入东西或更动态地...

14得票8回答
有哪些将C代码模块化的方法?

随着项目规模的增长,你知道哪些方法、实践和约定可用于将C代码模块化?

46得票7回答
Effective C++ 条款23:更喜欢非成员和非友元函数而不是成员函数

在考虑类设计时,特别是函数应该是成员函数还是非成员函数的问题上,我查阅了Effective c++中的第23条建议:优先使用非成员非友元函数。首先看到其中以Web浏览器为例的内容,感觉有些道理,但是书中所称的"方便函数"(指非成员函数)改变了类的状态,不是吗? 那么,我的第一个问题是,这些...

15得票5回答
为什么人们会编写返回非const引用的私有字段getter?

我们都可以认同公共变量对封装等方面是不利的。然而,我注意到有很多代码会这样做:class foo { private: int integer_; string someString_; // other variables public: int& i...

27得票2回答
为什么私有成员变量可以被类实例更改?

class TestClass { private string _privateString = "hello"; void ChangeData() { TestClass otherTestClass = new TestClass(); ...

29得票5回答
封装为何是面向对象编程语言的重要特性?

我参加了不同的面试,被问到封装为什么被使用?实际上谁需要封装?是程序的用户吗?还是同事们?抑或是为了保护代码免受黑客攻击?

22得票22回答
实践中的私有成员和公共成员(封装有多重要?)

面向对象编程的最大优点之一是封装,而我们被教导的“真理”之一是成员变量应该始终设为私有,并通过访问器和修改器方法来使用,从而确保能够验证和验证更改。 然而,我很好奇这在实践中是否真的很重要。特别是,如果您有一个更复杂的成员变量(例如集合),那么只公开它而不是创建一堆获取集合键、添加/删除集合...

8得票4回答
如何将C API封装为RAII C ++类?

如果有一个控制会话和项目的库的C API,最佳设计是如何将C API封装到RAII C++类中? C API看起来像这样: HANDLE OpenSession(STRING sessionID); void CloseSession(HANDLE hSession); HANDLE Op...

42得票5回答
如何在JavaScript中实现C#访问修饰符?

摘要 我想在 JavaScript 中像在类语言(如 C#)中一样正确地实现继承和封装。 不好的一点是,受保护成员在私有实例中有多个副本,只能通过闭包访问,我没有别的想法,除了将这些成员刷新到私有实例中。 如果可能的话,我想在Function.extend的代码中摆脱transmit和...

8得票1回答
为什么我能使用值构造函数,即使我没有导出它?

为了练习,我正在一个名为“Queue”的模块中实现队列数据类型。我的数据类型也被称为“Queue”,它的唯一值构造函数也是如此: module Queue (Queue, enq, emptyQueue) where data Queue a = Queue { inbox :: [...