函数和类之间有很大的区别。
让我从头开始解释它。(仅当务之急)
编程历史,我们都知道从简单的基本命令开始(例如-:Assembly)。
Next结构化编程附带了流程控件(例如-:if,switch,while,for等),该范例使程序员可以有效地控制程序流程,并且可以最大程度地减少循环的代码行数。
接下来是过程编程,它将指令分为过程(功能)。这给程序员带来了两个主要好处。
1.将语句(操作)分组为单独的块。
2.可以重复使用这些功能块(功能)
但是最重要的是,范式并没有提供管理应用程序的解决方案。过程编程也只能用于小型应用程序。那不能用于开发大型Web应用程序(例如,银行,谷歌,YouTube,Facebook,stackoverflow等),无法创建android sdk,flutter sdk等框架……
因此,工程师需要做更多的研究来以适当的方式管理程序。
因此对象是任何应用程序的基础。
类(运行时对象)将与这些变量(数据)相关的数据和函数分组。因此对象由数据及其相关操作组成。
[这里我不会解释oop]
👉👉👉好吧,让我们来了解一下flutter框架。👈👈👈
-Dart同时支持过程和oop,但是,Flutter框架完全通过使用classes(oop)构建。(因为大型可管理框架无法使用过程创建)
在这里,我将列出使用它们而不是使用类来制作小部件的功能的原因的列表。👇👇👇
1-大多数情况下,构建方法(子窗口小部件)调用同步和异步函数的数量。
例如:
因此build方法需要保留在单独的类窗口小部件中(因为build()方法调用的所有其他方法都可以保留在一个类中)
2-使用窗口小部件类,您可以创建另一个类的编号,而无需一次又一次地编写相同的代码(** Use Of Inheritance **(扩展))。
并且还可以使用继承(扩展)和多态性(覆盖)来创建自己的自定义类。(在下面的示例中,我将通过扩展MaterialPageRoute来自定义(覆盖)动画(因为我要自定义其默认过渡)。)
class MyCustomRoute<T> extends MaterialPageRoute<T> {
MyCustomRoute({ WidgetBuilder builder, RouteSettings settings })
: super(builder: builder, settings: settings);
@override //Customize transition
Widget buildTransitions(BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) {
if (settings.isInitialRoute)
return child;
// Fades between routes. (If you don't want any animation,
// just return child.)
return new FadeTransition(opacity: animation, child: child);
}
}
3-函数不能为其参数添加条件,但是可以使用类窗口小部件的构造函数。
下面的代码示例below(此功能在框架小部件中大量使用)
const Scaffold({
Key key,
this.bottomNavigationBar,
this.bottomSheet,
this.backgroundColor,
this.resizeToAvoidBottomPadding,
this.resizeToAvoidBottomInset,
this.primary = true,
this.drawerDragStartBehavior = DragStartBehavior.start,
this.extendBody = false,
this.extendBodyBehindAppBar = false,
this.drawerScrimColor,
this.drawerEdgeDragWidth,
}) : assert(primary != null),
assert(extendBody != null),
assert(extendBodyBehindAppBar != null),
assert(drawerDragStartBehavior != null),
super(key: key);
4-函数不能使用const,而Class小部件可以将const用于其构造函数。(影响主线程的性能)
5-您可以使用同一类(类/对象的实例)创建任意数量的独立窗口小部件,但是函数无法创建独立窗口小部件(实例),但是可以重复使用。
[每个实例都有自己的实例变量,并且完全独立于其他小部件(对象),但是函数的局部变量取决于每个函数调用*(这意味着,当您更改局部变量的值时,它会影响变量的所有其他部分使用此功能的应用程序)]
与函数相比,类具有很多优点。(仅少数用例)
🤯我的最终想法
因此,请勿将函数用作应用程序的构建块,而仅将它们用于进行操作。否则,当您的应用程序具有可伸缩性时,它将导致许多难以解决的问题。
- 使用功能完成一小部分任务
- 使用类作为应用程序的构建块(管理应用程序)
📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍 📍📍📍📍📍📍📍
您无法通过使用的语句(行)的数量来衡量程序的质量
📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍 📍📍📍📍📍📍📍
谢谢阅读