重构问题:提取为小部件/方法/变量...有什么优点和缺点?

Tom*_*ran 7 refactoring dart flutter

他们三个基本上做同样的事情。最佳实践是什么?什么情况下应该使用哪种提取方式?标准是什么?

我想这些可能是一些重要的点:

  • 可读性
  • 表现
  • 行数

例子:

提取容器。您更喜欢哪种方式?为什么?

class Example extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
Run Code Online (Sandbox Code Playgroud)

1.将Container提取为Widget(+6行):

class Example extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ExtractedAsWidget();
  }
}

class ExtractedAsWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
Run Code Online (Sandbox Code Playgroud)

2. 将容器提取为方法(+1(在某些情况下为 3)行):

class Example extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return buildContainer();
  }

  Container buildContainer() => Container();
}
Run Code Online (Sandbox Code Playgroud)

3. 将容器提取为变量(+1 行):

class Example extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    var container = Container();
        return container;
  }
}
Run Code Online (Sandbox Code Playgroud)

Rav*_*dhi 9

提取Widget是最佳实践,因为 Flutter 框架可以优化小部件而不是方法或变量。但对于这种特殊情况,我将提取Container为method. 提取 asWidget就太过分了。

提取为变量

仅当您的小部件已修复时才应进行提取variable,仅在单个文件中使用并且不需要任何参数。

提取为方法

method当您的小部件仅在单个文件中使用时应该进行提取(并且它还可以使用一些参数进行额外的自定义)。它还增加了代码的可读性。

提取为小部件

提取 asWidget是创建在不同文件中多次使用的小部件的最佳方法。Flutter 建议StatelessWidget尽可能多地创建。

我可以建议的最简单的例子是使用按钮。每个应用程序都有一个我们使用的固定原色按钮。因此,我们不应该创建变量或方法,而是应该创建一个StatelessWidget该按钮并在应用程序的多个屏幕中使用它。