方案:类R上的非静态方法T()声明变量t,并将其分配给相同类R的非静态方法S()的返回值。方法S()修改类型的对象R.这些方法都不接收参数。在方法T()中未使用变量t,因此未将IDE标记t用作变量。一个对方法T()进行清洗的程序员看到了变量t,并且由于不使用变量t,程序员将其删除了。还删除对对象进行S()的修改。然后代码被破坏了。问题是:为什么语言允许这种行为?如何避免这种做法(不向程序员提出建议)?
class R {
var a
function T(){
// call to S() modify the object, but t is not used so the programmer delete it
var t = S()
//function end without using a
}
//Modify the object
function S(){
this.a = 10
}
}