清理我继承的C#
项目上的一些警告,我找到了这段代码:
private bool _WriteValue(object FieldValue,..,..)
...
if(MultipFactor!=1)
FieldValue=((double)FieldValue)*MultipFactor;
else
FieldValue=FieldValue;
我显然在不考虑太多的情况下刻录了else
块,只是想知道为什么以前的程序员已经离开了那个部分。
在您看来,有foo=foo
有意义的有效情况吗?
有关_WriteValue
方法的更多详细信息:
_WriteValue
方法包含在传递给WriteValue
参数的不同重载object FieldValue
方法中,以下类型的值:int
,long
, string
和Datetime
。
答案 0 :(得分:5)
如果FieldValue
是属性,set
运算符可以触发某些代码,那么在这种情况下自我赋值是否有意义?!
一个例子是:
public string FieldValue
{
get
{
return _fieldValue;
}
set
{
_fieldValue = value;
Trace.WriteLine( string.Format("Received value '{0}'.", value ) );
}
}
(我的回答是在海报添加FieldValue
实际上是方法参数的信息之前给出的,而不是我先假设的属性)
答案 1 :(得分:2)
有一些不好的程序员,他们通常会留下一些垃圾......
答案 2 :(得分:1)
如果FieldValue
后面有吸气剂或固定剂,那么它可能会产生副作用。例如:
private double myFieldValue;
public double FieldValue
{
get { return myFieldValue; }
set { myFieldValue = value; ReformatSystemVolume(); }
}
使用具有副作用的吸气剂是非常糟糕的做法。然而,有很多副作用很常见,因为这些副作用不像我的例子那样剧烈!
答案 3 :(得分:1)
程序员可能没有意识到条件断点的存在,并利用该语句作为放置有条件触发的断点的位置。
为了说清楚,我并不是说这是一个好主意,但在没有条件断点的环境中这是一个技巧。
答案 4 :(得分:0)
在C ++中,您可以定义operator=
来执行任何操作:)
答案 5 :(得分:0)
存在一些低级硬件情况,其中设置值具有(期望的)副作用,这些副作用无法以其他方式调用。这是愚蠢的,但超出了程序员修复的范围。我只是在裸C代码中看到过这种情况,所以我确信这不是你在C#代码中看到这个的原因,但它确实发生了。
答案 6 :(得分:0)
请注意,这是一个非常好的(也是非常常见的)你应该评论的事情的例子:任何“明显的”“修复”实际上会破坏的东西。确保你从挫折中学习!