Dart 风格指南建议使用构造函数而不是静态方法来创建实例,因为“ Dart中的命名构造函数和工厂构造函数为您提供了其他语言中静态方法的所有灵活性,同时仍然允许调用站点看起来像常规构造函数调用”。
int.parse()
那么,声明并double.parse()
作为静态方法而不是工厂构造函数是否有技术原因?
更一般地说,在 Dart 中选择编写工厂构造函数而不是静态(工厂)方法的准则是什么?
Dart 风格指南建议使用构造函数而不是静态方法来创建实例,因为“ Dart中的命名构造函数和工厂构造函数为您提供了其他语言中静态方法的所有灵活性,同时仍然允许调用站点看起来像常规构造函数调用”。
int.parse()
那么,声明并double.parse()
作为静态方法而不是工厂构造函数是否有技术原因?
更一般地说,在 Dart 中选择编写工厂构造函数而不是静态(工厂)方法的准则是什么?
在 Google Groups 中搜索了一段时间后,我确实找到了官方的解释:Link to Groups discussion
出于存档目的,此处引用链接中的文本:
我曾考虑将其设为构造函数,但对于 int 或 double 值感觉不合适。
我将“解析”视为实用函数而不是构造函数,可能是因为 int 和 double 否则实际上没有构造函数。你不是创建一个整数,而是发现它。
此外,目前检查字符串是否是数字文字的唯一方法是调用 parse 并查看它是否抛出(但我对此并不完全满意!),而且我不喜欢除了编程之外抛出任何东西的构造函数错误。
而且你不必以这种方式在它前面写“新”,没有特别的收获。
没有单一的硬性原因使它显然不是构造函数,而是一堆较小的问题共同使我更喜欢它作为静态函数。
我的“性能目的”理论就这么多。那好吧。