问题标签 [private-members]

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.

0 投票
1 回答
8455 浏览

iphone - 声明私有成员变量

几周前我开始学习Objective-C,但我仍然不明白如何正确管理类的封装。在类中声明私有成员变量的最佳方法是什么?

似乎使用“@property”为您的成员变量设置正确的 getter/setter 是正确的方法,而不仅仅是在界面中将其声明为“@private”。但在我看来,这仍然让其他类可以访问这些变量。即使您将属性声明为“只读”,外部类也可以访问对成员变量的引用并对其进行修改!

所以我猜想声明私有成员变量的最佳方法是通过不声明属性来不包含任何 guetter/setter。我对吗?或者,还有更好的方法?

谢谢

0 投票
1 回答
387 浏览

c# - 为什么我们需要静态私有数组来初始化其他非静态私有数组字段?

如果您查看Stack<T>.NET 4.0 的内部类,您会注意到有一个“emptyArray”私有静态字段,用于在构造函数内部初始化一个真正的“数组”私有字段。

为什么不直接放this.array = new T[0];?还有为什么要为大小和版本字段放置初始化笔划,如果您省略这些行,它们无论如何都会被初始化为默认值(0)。

0 投票
3 回答
237 浏览

.net - 使用反射改变实现

我的老板认为自己是 OOP 大师,而我认为他是业余程序员。他负责我们的 Sage 开发,为我们的客户 Sage 安装添加自定义要求。他最近对反思感到非常兴奋,他在代码中反思 Sage 的程序集并更改私有成员和事件处理程序。我认为这不是一个好主意,但他击落了我,说 Sage 认为他能做到这一点真是太棒了。我认为这是不好的做法,因为它效率低下,而且如果他们在任何时候更改实现,我们的代码都可能崩溃。我的意思是通常开发人员出于某种原因将某些东西设为私有,对吗?

这方面的一般规则是什么?

如果这似乎是一个愚蠢的问题,非常感谢和道歉。

保罗

0 投票
2 回答
10377 浏览

php - PHP:从类中调用私有方法,死得很惨

所以这听起来可能有点令人费解。手指交叉我清楚地遇到了。

我在 PHP 中的 MVC 框架中工作。

我加载了一个调用助手的控制器/report/index

助手内部

我运行它就像^这一切都很好。不幸的是,我想这样运行它:

不幸的是......当我尝试从一个我从其他地方调用的类中调用一个私有函数时......(哇,那是一口)......一切都死了。死得非常非常糟糕,我什至没有收到错误。

对我来说,很明显我遇到了某种令人难以置信的愚蠢的语法问题......但是我如何正确地从类中访问私有函数?

也许是这样的:self::do_stuff();

声明和访问私有类变量呢?

欢迎任何帮助。

0 投票
4 回答
11971 浏览

c++ - C++ 传递对类的私有变量的引用 - 编译器问题?

类中私有变量的引用传递是否在该类可接受的实践之外直接更改?或者这是编译器“应该”采取和防止的事情?

例子:

输出:

我需要使用其他/不同的对象来做这样的事情,这些对象是所有者类私有的,但在需要时可以由其他人更改。我想要的最后一件事是让这种练习在未来回来并责备我。

本质上让我担心的是,我想将类/结构基本上视为指向缓冲区的指针,并将成员的地址视为该缓冲区的偏移量,这样即使您传递成员的指针值,它也会如果没有它所属的类/结构的基指针,它将毫无用处。这是我本能的感觉应该是这样的,所以上面的例子甚至不应该是可能的。

0 投票
3 回答
1983 浏览

c++ - 为什么 GCC 允许私有嵌套模板类/结构从全局模板函数中可见?

我不明白为什么在下面的代码中,我可以print_private_template在编译器抱怨时创建函数print_private_class

这是预期的行为吗?编译器错误/扩展?

为了清楚起见,我的目标是使编译器使用 print_private_template和时出错print_private_class

0 投票
1 回答
1540 浏览

c++ - 初学者 C++ 使用访问器/获取器从私有成员变量(二维数组)中提取数据

这里的总菜鸟有大约 2 个月的 C++ 经验(没有其他背景),所以对我来说放轻松。

我正在为编程任务编写战舰游戏。游戏网格是 15X20,我试图将网格作为类的私有成员变量player

我的问题是:

如果类player有一个私有成员变量:

是否有任何理由将访问器函数定义为:

行不通?

它正在我的头脑中。我得到的错误是:

c2065:“playgrid”未声明的标识符

它指向return playgrid[val1][val2]访问器定义中的行。

在试图弄清楚这一点时,我已经成功地使用我的 getter 从其他私有成员变量中提取值,因此在创建对象后,其他一切都在对象中正常工作。我绝对没有拼错任何东西或滥用大小写。在我的构造函数中,playgrid 初始化如下:

是什么赋予了?

0 投票
2 回答
140 浏览

unit-testing - 当您使用私有方法的知识来选择测试用例时,您是否明确地对私有方法进行单元测试

似乎测试社区的普遍共识是测试私有方法。相反,您应该通过测试调用它们的公共方法来测试私有方法。但是,我觉得有些不对劲。我们以这个方法为例:

这个特殊的功能在我班的几个地方使用。我想if在这个函数中测试语句的两个分支,这意味着对于每个公共函数,我必须测试这两种情况以及公共方法本身所做的任何其他事情。

这就是我觉得奇怪的地方。如果我正在测试是否getName()在满足某个特定条件时抛出异常,那么这意味着我必须知道私有方法的实现细节。如果我必须知道这一点,那么为什么我不应该扩展类,公开方法并以这种方式测试呢?

(顺便说一句:如果你想知道为什么存在这样一个奇怪的方法,这是用来自动找出这个类的模板文件存储在哪个目录中的)。

0 投票
4 回答
6731 浏览

c++ - 访问同一类对象的私有元素

这合法吗?如果没有,以下代码是否允许这样做?

0 投票
2 回答
2938 浏览

python - 在有 getter/setter 时访问私有变量

我有一个关于 Python 编程的正确方式的问题......也许可以有几种不同的观点,但这里是这样的:

假设我有一个具有几个私有属性的类,并且我实现了两个 getter/setter(不是重载__getattr__and __setattr__,而是采用更“Java-tistic”的风格):

现在让我们说下面几行,在同一个类的另一个方法中,我需要重新设置那个“__private1”的值。由于是同一个类,我仍然可以直接访问私有属性 self.__private1。

我的问题是:我应该使用:

还是我应该直接访问:

由于我是设置新值的人,我知道所述值(“privateBlaBlaBla”)是正确的(以“private”开头的 str()),因此不会导致系统不一致。另一方面,如果另一个程序员使用我的代码,并且需要更改 self.__private1 属性的功能,他将需要检查所有代码,并查看 __private1 的值是否已在其他地方手动设置。

我的猜测是正确的做法是始终使用 setPrivate1 方法,并且只直接访问 get/set 中的 __private1 变量,但我想知道更有经验的 Python 程序员的意见。