我正在研究初级(也许是高级)软件工程师的常见错误和不良假设.
你最久以来最终纠正的假设是什么?
例如,我误解了整数的大小不是标准,而是取决于语言和目标.国家有点尴尬,但确实如此.
坦率地说; 你有什么坚定的信念,大致你维持这个假设多久了?它可以是关于编程,编程语言或计算机科学的算法,语言,编程概念,测试或其他任何内容.
通常我使用基于原型的标准OOP方法,我的类看起来像这样
var std = function(){
this.log = function(msg){ console.log("want to be private. " + msg) };
};
std.prototype = {
logInfo: function(msg){
this.log(msg);
}
};
Run Code Online (Sandbox Code Playgroud)
但在这种情况下log是公共方法,任何人都可以使用它.但我希望将其设为私有,但仍可在原型中声明的方法中使用.为此,我们需要关闭.代码将更改为此
var closureStd = (function(){
var std = function(){};
var log = function(msg){ console.log("I'm really private, youhooo!" + msg) };
std.prototype = {
logInfo: function(msg){
log(msg);
}
};
return std;
})();
Run Code Online (Sandbox Code Playgroud)
所以我的问题:是之间的区别是什么std和closureStd什么是我需要支付能够调用从原型私有方法的价格是多少?
我遇到了一个相当奇怪的行为,并且不确定这是Java问题还是Eclipse问题.
请使用以下代码:
class Foo {
private String text;
public void doStuff(Foo f) {
System.out.println(f.text);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,为什么f.text可以访问?这是一个私有领域,所以根据我的逻辑,它不应该,但IDE似乎认为它是.