我正在编写一些新代码,并想使用异步和等待来编写它,但调用代码目前不是用异步编写的。以异步方式编写新代码并调用它同步直到调用代码支持异步是否正确?
或者我应该写代码同步然后在以后转换它?它会被视为技术债务吗?
public Result Execute( Paramerters parameters ) {
return ExecuteAsync( parameters ).Result;
}
public Task<Result> ExecuteAsync( Paramerters parameters ) {
...
}
Execute
在一个接口(interface)上,并从其他一些尚未异步的代码中调用。创建异步版本并从 Execute
调用它直到调用 Execute
的代码转换为异步版本是否正确?
我的旧代码是用 .net 4.5.1 编写的,但尚未转换为异步。
最佳答案
http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638.aspx关于为什么要避免这种情况,以及如果不能避免如何缓解这个问题,有一些很好的观点。
但是,
Or should I write the code sync and then convert it at a later date?
这可能更容易,并且确实完全摆脱了这个问题。
And would it be considered technical debt?
不过,根据定义,它是:
无论如何,您可能需要在未来很长一段时间内进行同步调用,以支持这种情况,因此您已经有了技术债务,您只是在处理它。
您确实已经有了技术债务。你说,“但是调用代码目前不是异步编写的”。好了,那是你的债,已经存在了。
如果同步和异步版本相互镜像(非常常见)并且您将这些方法放在它们的双胞胎旁边,那么可以很容易地同时对每个方法进行大部分更改。
<
关于c# - 异步编写新代码但调用同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35798480/