我有一个类,它有一个属性,该属性不应该包含超过某个最大值的值。
public abstract class MyBaseClass
{
private int adjustedInt;
public int NotGreaterThanFifty
{
get => this.adjustedInt;
set
{
this.adjustedInt = value < 50 ? value : 50;
}
}
}
我们希望记录所有试图为属性分配大于50的值的示例。我在一个业务类中添加了一个为该属性分配值的日志。这涵盖了大多数情况。但很少有可以设置相同属性的罕见示例。我收到反馈,询问为什么不在属性设置器中添加日志。
在setter中有一个log语句听起来很奇怪,这是一个好的实践吗?
2条答案
按热度按时间igetnqfo1#
不是没听说过,我以前见过。
在我看来,如果你的类已经把logger作为一个依赖项,那么这种事情没有什么错。毕竟,公开一个属性而不仅仅是一个字段的一个要点是在设置(或者在一些奇怪的情况下,甚至在获取)底层值时允许逻辑。如果你想跟踪这个逻辑,在你的属性设置器中使用logger是有道理的。
但是,如果这是您的类使用日志记录器的唯一原因,我会考虑将该属性作为公共get/私有set属性,并使用一个方法来设置它,该方法可以返回所设置的值的指示,甚至可以返回一些消息,说明发生了什么问题-类似于
voj3qocg2#
下面是我在一个情况下会做的事情,我现在不知道所有的示例,其中属性被试图分配一个大于50的值。
我将引入第二个属性NotGreaterThanFiftySave,并逐个检查所有对NotGreaterThanFifty的引用。如果我确认该值是合法的,我会让他们调用NotGreaterThanFiftySave。
这样,NotGreaterThanFifty上的调用者就更少了
当你完成后,你可以删除NotGreaterThanFiftySave并检查所有调用者。