静态方法和函数的优点和缺点

Cra*_*Cat 7 dart flutter

我知道函数独立于任何类,静态方法附加到类。看起来他们俩都取得了同样的成就。这引出了以下问题:它们的优点和缺点是什么?

我想创建一组用于离线 PIN 配置的函数,例如setPin, changePin, verifyPin。我是否必须将它们作为静态方法包装在类中,或者我可以将它们创建为 Dart 文件中的函数吗?

cre*_*not 7

静态方法与函数相比,没有明确的“优点和缺点”。

正如您正确指出的那样,唯一的区别是静态成员连接到类。

class A {
  static bool b() => false;
}

bool c() => true;
Run Code Online (Sandbox Code Playgroud)

这里唯一的区别是您需要通过访问静态成员A.b并且c可以直接访问。

静态方法甚至不能继承,这意味着class B extends A {}不允许您使用B.b,因为它是b静态成员。 A

话虽如此,@jamesdlin指出了一篇关于编写良好的 Dart 设计的文章。本文描述了您应该避免创建仅包含静态成员的类,并称其为糟糕的设计,即不是惯用的 Dart:

在惯用的 Dart 中,类定义了对象的种类。从未实例化的类型是一种代码味道。

回到您的问题,如果您的函数不是根据基于 Dart 团队文章的惯用 Dart 设计的对象的一部分,您可能应该将它们创建为顶级函数。

但是,您可能会考虑更改存储“PIN 配置”的方式,因为这听起来将此信息存储为对象是理想的选择。