多层调用/回调的业务代码有比较通用的优化方式吗?

查看 50|回复 1
作者:wildmelon   
语言是 Unity C#,场景其实就是游戏里的那种很多层的弹窗确认取消跳转。
说来惭愧,下面伪代码还是"优化"拆分过的。
之前塞在一个函数中,不管是代码本身(层级过多),还是业务逻辑都很难理解维护。
目前这里的 afterFinal 其实只在最后才用到,却穿过多个函数。考虑把每个步骤的 Step Event onSuccess 封装成一个类,又存在一定内存消耗(当然如果封装的维护性和阅读性很好的话是可以接受的)
思来想去还是先咨询各位,有没有比较通用的解决方式或者专业术语是适用于这类需求的?
function void Step1(Event afterFinal)
{
  if (condition1)
  {
    new ConfirmWindows1(onSuccess: ()=>{ Step2(afterFinal); });;
  }
  else
  {
    Step2();
  }
}
function void Step2(Event afterFinal)
{
  if (condition2)
  {
    new ConfirmWindows2(onSuccess: ()=>{ Step3(afterFinal); });;
  }
  else
  {
    Step3();
  }
}
function void Step3(Event afterFinal)
{
  if (condition3)
  {
    FinillyDoSomething();
    afterFinal?.Invoke();
  }
}

afterfinal, event, void, onsuccess

netabare   
点开标题的时候想的是 Monad ,但是既然是 Unity C#的话感觉好像 op 的处理方法也有好处?毕竟 Unity 比较吃性能。
突发奇想,不知道能不能把三个 step 函数写成三个函数变量,塞进一个数组里,稍微重构一下代码,不过总觉得怎么弄都会有损耗。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部