【问题标题】:Refactoring question: Extract as widget/method/variable... What are pros and cons?重构问题:提取为小部件/方法/变量......有什么优点和缺点?
【发布时间】:2020-10-22 17:09:32
【问题描述】:

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

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

  • 可读性
  • 性能
  • 行数

示例:

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

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

1。将容器提取为小部件(+6 行):

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

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

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

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

  Container buildContainer() => Container();
}

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

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

【问题讨论】:

    标签: flutter dart refactoring


    【解决方案1】:

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

    提取为变量

    提取为variable 仅应在您的小部件固定时进行,仅在单个文件中使用且不需要任何参数。

    提取为方法

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

    提取为小部件

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

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

    【讨论】:

      猜你喜欢
      • 2011-09-08
      • 2019-05-21
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2021-11-05
      • 2010-09-06
      • 2010-09-21
      相关资源
      最近更新 更多