如何编写符合Dart语言习惯的实用工具函数与类?
Dart实用工具类/函数编写的最佳实践探讨
我正在梳理项目中复用代码片段(比如日期时间格式化工具这类多处复用的逻辑)的不同编写方式。
我有Java开发背景,在Java里通常这么写:
class UtilsXyz { public static doSth(){...}; public static doSthElse(){...}; }
但这种静态工具类的写法很难做单元测试,另一种替代方案是到处注入不含静态成员的工具类。
在Dart里,上述两种Java的写法都可行,但我还发现了一些更贴合语言特性的写法:
- Mixins:不少文章都推荐用它来写工具函数,但我觉得它本质是解决菱形继承问题的方案,而非专门的工具类实现方式,可读性也不强。不过如果是只针对Widgets、Presenters或UseCases这类特定场景的工具函数,用mixins会显得比较自然。
- 扩展函数(Extension Functions):像
'2023-01-29'.formatNicely()这种写法看起来很直观,但我需要能模拟(Mock)工具函数,而扩展函数目前无法被模拟。 - 全局函数:这是我目前认为最符合Dart语言习惯的工具实现方式。这类函数可以正常做单元测试,调用起来也方便,不像mixins那样显得突兀。而且我还能用
as关键字导入,让其他开发者清楚知道当前用的函数来自哪里。
有没有人能分享工具类/函数编写的最佳实践?我是不是还漏掉了其他可行的方案?
内容的提问来源于stack exchange,提问作者PrzemekTom
相关产品推荐
相关产品推荐

