微软不会起名

💡 原文中文,约1500字,阅读约需4分钟。
📝

内容提要

微软在协程命名上存在误导性问题,原作者使用的 Task<> 和 promise_type 命名不准确,导致混淆。应将其改为 awaitable<> 和 coro_frame,final_suspend 应改为 resume_caller,await_suspend 和 await_resume 也需重新命名,以更好地反映实际功能。整体设计应简化,避免数据与代码混合。

🎯

关键要点

  • 微软的协程命名存在误导性,Task<> 和 promise_type 的命名不准确。

  • 应将 Task<> 改为 awaitable<>,promise_type 改为 coro_frame,以更好地反映实际功能。

  • final_suspend 应改为 resume_caller,因为它的功能是恢复调用者,而非挂起。

  • await_suspend 应改为 await_setup,await_resume 应改为 await_result,以准确描述其功能。

  • initial_suspend 和 final_suspend 的设计应与 awaitable 结合,promise_type 应仅作为数据存储对象。

🔎

延伸解读

命名的重要性

在编程中,命名不仅是为了便于理解,更是为了准确传达功能。微软在协程命名上的失误可能导致开发者对其功能产生误解,从而影响代码的可读性和维护性。准确的命名能够帮助开发者更快地理解代码逻辑,减少错误的发生。

协程设计的影响

协程的设计和命名直接影响到其使用效果。错误的命名可能导致开发者在使用时产生混淆,进而影响程序的性能和稳定性。开发者在设计协程时,应关注命名的准确性,以确保代码的清晰性和可维护性。

标准化的重要性

微软的命名问题不仅影响其自身的代码库,还可能对整个开发社区造成负面影响。标准化的命名可以促进代码的共享与复用,避免因命名不当而导致的误解。因此,开发者在参与标准制定时,应积极提出合理的命名建议。

延伸问答

微软在协程命名上存在哪些误导性问题?

微软的协程命名中,Task<> 和 promise_type 的命名不准确,导致混淆。应改为 awaitable<> 和 coro_frame。

为什么 Task<> 应该改为 awaitable<>?

因为只有被 spawn 出来的协程才叫任务,而 awaitable<> 更准确地描述了可异步等待返回的函数。

final_suspend 的命名为何被认为是误导性的?

final_suspend 实际上是恢复调用者,而不是挂起,因此应改为 resume_caller。

await_suspend 和 await_resume 的命名有什么问题?

await_suspend 应改为 await_setup,因为它是恢复 B 的状态,而 await_resume 应改为 await_result,表示获取结果。

promise_type 的设计有什么缺陷?

promise_type 应仅作为数据存储对象,不应携带执行代码,避免混淆。

如何简化微软的协程设计?

应将 initial_suspend 和 final_suspend 的设计与 awaitable 结合,简化数据与代码的混合。

🏷️

标签

➡️

继续阅读