Dart样式指南建议使用constructors instead of static methods to create instances,因为Dart中的“命名构造函数和工厂构造函数为您提供静态的所有灵活性其他语言中的方法,同时仍允许调用点看起来像常规构造函数调用“。
是否存在技术原因,因为已将int.parse()
和double.parse()
声明为静态方法而非工厂构造函数?
更一般地说,在Dart中选择在静态(工厂)方法上编写工厂构造函数的准则是什么?
答案 0 :(得分:7)
在谷歌群组中挖掘了一段时间之后,我确实找到了正式的解释:Link to Groups discussion
出于存档目的,此处引用链接中的文字:
我想过把它变成一个构造函数,但是对于int或double值感觉不对。
我认为“解析”作为一个实用函数而不是构造函数,可能因为int和double实际上没有构造函数。你没有创建一个整数,你会发现它。
此外,目前检查字符串是否为数字文字的唯一方法是调用parse并查看它是否抛出(但我对此并不完全满意!),我不喜欢抛出的构造函数除了编程错误之外什么都没有。
而且你不必以这种方式在它面前写“新”,因为没有特别的收获。
没有一个简单的理由使它显然不是构造函数,而是一堆较小的问题,这些问题共同使我更喜欢它作为静态函数。
对于我的“表现目的”理论来说太多了。哦,好吧。