我们有几个类,其中对成员函数的调用可能会改变状态,有时不依赖于具有默认值的布尔值。
A a;
a.set( "foobar" );
assert( a.changed() == true );
相对
A a;
a.set( "foobar", false );
assert( a.changed() == false );
请注意,这些成员函数是虚拟的。我倾向于使用别名来更好地阅读代码,并使私有成员函数仍然允许旧方法,并且只将包装器提供给公众:
a.silentlySet( "foobar" ) {
a.set( "foobar", false );
}
我想这无论如何都会被内联。我知道我可以编写枚举和常量,这也可以提高可读性:a.set( "foobar", SILENTLY );
但我感觉不太好,因为问题是布尔性质的(做或不做)。另一方面。但是,我想听听您如何处理这种情况。(我想我会得到一个“视情况而定”的答案,因为我肯定错过了一些关键细节)接受它吗?
这些成员函数不经常被调用和使用,但也不是很少。我担心的是,有时您可能会将布尔值误解为silent/not_silent-flag,而这具有其他含义。
这也可能具有误导性的示例:
if( b->getData( false ) && something_other )
这可能与b->getData() == false