Dart工厂(构造函数)与静态方法; 例如,为什么int.parse()不是工厂构造函数?

Pat*_*lin 8 constructor static-methods factory factory-method dart

飞镖风格指南建议使用构造函数,而不是静态方法来创建实例,因为" 命名的构造函数和工厂构造函数中达特给你所有的其他语言的静态方法的灵活性,同时仍然允许调用点显得像一个普通的构造函数调用 ".

那么是否存在技术原因,因为已经声明int.parse()并且double.parse()是静态方法而不是工厂构造函数?

更一般地说,选择在Dart中通过静态(工厂)方法编写工厂构造函数的指导原则是什么?

Mar*_*ioP 8

在谷歌群组中挖掘了一段时间之后,我确实找到了正式的解释:链接到群组讨论

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

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

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

此外,目前检查字符串是否为数字文字的唯一方法是调用解析并查看它是否抛出(但我对此并不完全满意!),并且我不喜欢构建器除了编程之外什么都没有错误.

而且你不必以这种方式在它面前写"新",因为没有特别的收获.

没有一个硬性原因使它显然不是构造函数,而是一堆较小的问题,这些问题共同使我更喜欢它作为静态函数.

对我的"表现目的"理论来说太过分了.那好吧.

  • 好吧,从 Dart 2.0 开始,不鼓励使用 new ,那么实际上就没有什么区别了。 (4认同)