繁体   English   中英

在返回值和“回调”之间做出决定时的样式与一致性

[英]Style vs. Consistency when deciding between return value and 'callback'

我当前正在重新编写的代码的工作原理如下(C ++ 11之前的版本):

FOO.CPP

if (CONDITION)
{
    SyncThing thing;
}
else
{
    AysncThing thing;
}

complete(bool isSuccess)
{
    // parses status and clears up
}

其中SyncThing和AsyncThing如下:

同步CPP

SyncThing::SyncThing()
{
    // some complex synchronous stuff that calls Foo::complete() when done.
}

异步CPP

AsyncThing::AsyncThing()
{
    // some complex asynchronous stuff that calls Foo::complete() when done.
}

为了不让构造函数做复杂的事情,并避免在完成后避免构造函数调用Foo :: complete()的非显而易见的代码路径,我想从SyncThing的构造函数中删除复杂的东西,并将其放在一个单独的函数中,该函数称为根据Foo.cpp的逻辑,如下所示:

FOO.CPP

if (CONDITION)
{
    SyncThing thing;
    bool didTheThing = thing.doSomeComplexSyncStuff();       
    complete(didTheThing);
}
else
{
    AysncThing thing;
}

complete(bool isSuccess)
{
    // parses status and clears up
}

我认为这使代码路径更易于遵循。

我的问题如下:

  1. 忽略AsyncThing, 我的SyncThing更好更简单布尔回报版本比有SyncThing或SyncThing :: doSomeComplexSyncStuff(的构造函数)调用foo ::完成()的时候做了什么?

  2. 总体而言,考虑到AsyncThing,有必要返回“回调”样式,是否最好保持一致性并对SyncThing进行相同处理,即使对1.的回答为肯定?

非常感谢!

在我看来,最好的事情是对SyncThingAsyncThing做类似SyncThing.setCompletedFunction(&complete)AsyncThing 这两个都清楚

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM