代码之家  ›  专栏  ›  技术社区  ›  Manelzzz

以下哪一个是SignIn的BlocListener中if语句的最佳结构?

  •  0
  • Manelzzz  · 技术社区  · 1 年前

    我正在设计一个使用Flutter Bloc的应用程序,我不确定这两种方法中的哪一种在结构上更好。一个在代码行方面更短,而另一个在快速编写时更直观。哪一个对理解代码更正确?

    较少代码:

    setState(() {
        if (state is SignInProcess) {
          signInRequired = true;
          return;
        } else {
          signInRequired = false;
          if (state is SignInFailure) {
            _errorMsg = "Invalid email or password";
          }
        }
    });
    

    写作时更直观:

    if (state is SignInSuccess) {
      setState(() {
        signInRequired = false;
      });
    } else if (state is SignInProcess) {
      setState(() {
        signInRequired = true;
      });
    } else if (state is SignInFailure) {
      setState(() {
        signInRequired = false;
      _errorMsg = 'Invalid email or password';
      });
    }
    

    我不希望最简单的代码是我提供的任何选项。我对其他建议持开放态度。

    1 回复  |  直到 1 年前
        1
  •  0
  •   A-E    1 年前

    根据可读性,两者都是可读的。

    我认为你正在努力实现的是 符合KISS原则 (保持简单,愚蠢)。

    该原则指出,您的代码应该尽可能简单,这样可以提高可读性和以后的维护。

    你问题中的两个选项都符合KISS原则。

    如果你想找一个简写代码(如@Md.Yeasin Sheikh所建议的):

    setState(
    (){
     signInRequired = state is SignInProcess 
     }
    );
    

    你猜怎么着,它也符合KISS原理,而且看起来很容易理解。