考虑到"named constructors and 102 in Dart give you all of the flexibility of static methods in other languages, while still allowing the callsite to appear like a regular constructor invocation",Dart Style Guide推荐使用constructors instead of static methods to create instances.

那么,将int.parse()double.parse()声明为静态方法而不是工厂构造函数是否有技术原因呢?

更广泛地说,在DART中 Select 编写工厂构造函数而不是静电(工厂)方法的指导原则是什么?

推荐答案

在谷歌群组中翻找了一段时间后,我确实找到了一个官方解释:Link to Groups discussion

出于存档目的,此处引用链接中的文本:

我想把它变成一个构造函数,但对于int或double值,它感觉不太合适.

我认为"parse"是一个实用函数,而不是一个构造函数,这可能是因为int和double实际上没有构造函数.你不会创造一个整数,你会发现它.

此外,目前判断字符串是否为数字文字的唯一方法是调用parse并查看它是否抛出(但我对此并不完全满意!),我不喜欢抛出编程错误以外的任何东西的构造函数.

你不必这样写"new"在它前面,没有特别的好处.

没有一个简单的原因使它显然不是一个构造函数,而是一系列较小的问题使我更喜欢它作为一个静态函数.

我的"绩效目标"理论就到此为止.哦,好吧.

Dart相关问答推荐

Dart中的运算符(){…}做什么?

Dart:当两个或多个任务等待同一个 Future 时会发生什么

Flutter:Firebase身份验证无需登录即可创建用户

如何在 Flutter 中向 AnimationController 添加 Curves 类动画?

Asset图像作为Card背景,Flutter 中顶部有文本

Angular Dart 和 Polymer Dart 的区别

Dart 1.8 中的异步/等待功能

Flutter - 自定义按钮点击区域

使用 headers 和 body 进行 HTTP Post

在小部件之间画一条线

如何签署 Flutter 的应用程序

如何垂直对齐行元素?

Flutter 示例中的流布局

Dart:实例变量在私有类中应该是私有的还是公共的?

Dart 中 http 和 HttpClient 的区别

如何在 Dart 中将字符串转换为 utf8?

谷歌的 Dart 编程语言的作用是什么?

如何从 Dart 中的字符串中删除换行符?

Exception: Concurrent modification during iteration: Instance(length:17) of '_GrowableList';

Dart 中如何将列表转换为map