メンバー関数への呼び出しが状態を変更する可能性があり、デフォルト値のブール値に依存しない場合があるいくつかのクラスがあります。
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