重构题:Extract as widget/method/variable...有什么优缺点?
Refactoring question: Extract as widget/method/variable... What are pros and cons?
他们三个基本上做同样的事情。最佳做法是什么?在什么情况下我应该使用哪种提取方式?标准是什么?
我想这些可能是重要的几点:
- 可读性
- 性能
- 行数
示例:
提取容器。您更喜欢哪种方式,为什么?
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;
}
}
提取为 Widget
是最佳实践,因为 Flutter 框架可以优化小部件而不是方法或变量。但是对于这种特殊情况,我会将 Container
提取为 method
。提取为 Widget
太过分了。
提取为变量
提取为 variable
只应在您的小部件固定时执行,仅在单个文件中使用并且不需要任何参数。
提取为方法
当您的小部件仅在单个文件中使用时,应提取为 method
(并且它还可以使用一些参数进行额外的自定义)。它还增加了代码的可读性。
提取为小部件
提取为 Widget
是创建在不同文件中多次使用的小部件的最佳方法。 Flutter 建议尽可能多地创建 StatelessWidget
。
我能建议的最简单的例子是按钮的使用。每个应用程序都有一个我们使用的固定原色按钮。因此,我们应该创建该按钮的 StatelessWidget
并在我们应用的多个屏幕中使用它,而不是创建变量或方法。
他们三个基本上做同样的事情。最佳做法是什么?在什么情况下我应该使用哪种提取方式?标准是什么?
我想这些可能是重要的几点:
- 可读性
- 性能
- 行数
示例:
提取容器。您更喜欢哪种方式,为什么?
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;
}
}
提取为 Widget
是最佳实践,因为 Flutter 框架可以优化小部件而不是方法或变量。但是对于这种特殊情况,我会将 Container
提取为 method
。提取为 Widget
太过分了。
提取为变量
提取为 variable
只应在您的小部件固定时执行,仅在单个文件中使用并且不需要任何参数。
提取为方法
当您的小部件仅在单个文件中使用时,应提取为 method
(并且它还可以使用一些参数进行额外的自定义)。它还增加了代码的可读性。
提取为小部件
提取为 Widget
是创建在不同文件中多次使用的小部件的最佳方法。 Flutter 建议尽可能多地创建 StatelessWidget
。
我能建议的最简单的例子是按钮的使用。每个应用程序都有一个我们使用的固定原色按钮。因此,我们应该创建该按钮的 StatelessWidget
并在我们应用的多个屏幕中使用它,而不是创建变量或方法。