BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Jon Skeet谈Noda Time 1.0

| 作者 Abel Avram 关注 7 他的粉丝 ,译者 姚琪琳 关注 0 他的粉丝 发布于 2012年11月22日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

Jon Skeet,Google软件工程师,微软C# MVP,最近发布了Noda Time 1.0,这是流行的Java日期/时间库Joda Time的.NET版本。

Noda Time旨在修复.NET日期/时间库中的缺陷,并降低使用复杂度。Noda Time采用了一些关键的概念:Instant—从Unix纪元开始计算的时刻;Partial—表示部分日期/时间;Interval—从一个毫秒时刻到另一个毫秒时刻的时间间隔;Duration—以毫秒为单位的时间间隔所持续的时间;Period—用字段表示的一段时间;Chronology—一个可插接的日历系统;Time Zone根据tz数据库进行更新。

虽然将Joda Time移植到.NET用了3年时间并且还有很多工作没有完成,但鉴于“在提供干净的API(在强调该领域‘固有的’复杂性的同时降低了‘附带的’复杂性)方面,我们已经明显领先于我所见过的其他日期/时间API”,Skeet仍然对这个结果感到满意。

InfoQ联系到了Skeet,让他谈谈更多关于Noda Time的内容以及未来的计划。

InfoQ:Noda Time 1.0提供了哪些.NET 4.5没有的特性?

JS:基本上,BCL中的类型十分有限——主要有两个类型(DateTime和DateTimeOffset)来表达你想表达的一个完整范围内的概念。Noda Time具有更多的类型,可以帮助开发者将精力集中于他们真正操作的数据类型。我们故意将它涉及为受限的API,可以防止你执行没有意义的操作。

关于我为什么不喜欢BCL中的时间/日期类型,可以看看我关于DateTime的博文

从根本上,我认为API在暴露功能时应该考虑以下四个目标:

  • 强迫用户做出某些决定(而不是隐藏该领域中重要的部分)
  • 当他们做出决定后,可以用干净的代码来表达这个决定,并在后台处理所有工作以实现这个决定
  • 尽可能地仅表达有意义的操作
  • 鼓励编写可测的代码

除了常规的日期时间API,Noda Time还提供了TZDB/zoneinfo/Olson/IANA时区信息的实现。

InfoQ:关于它的未来,你有什么计划?

JS:当然,这部分上取决于我们的用户。现在仍然有一些未完成的部分——我们希望能有更多的文本处理(起初可以先解析ZonedDateTime和OffsetDateTime)和PCL支持。不同形式的序列化问题也不容回避——我们已经实验性地支持了一些Json.NET(不在主程序集内),我还希望当v1.0中的主要概念全部正确的时候,我们可以增加对XML和二进制序列化的支持。

InfoQ:Noda Time能在任何.NET版本下工作吗?Mono行吗?

JS:目前我们针对的是.NET 3.5+,并且仅限于桌面版。我们希望支持便携式类库(PCL,Protable Class Libraries),但工作量太大,对那些需要框架支持但PCL却不支持的特性,我们只能忍痛割爱。

代码在设计上是支持Mono的,并且我们尽可能地在Mono上进行了测试。但在Mono的稳定发布版本上,我们遇到了一些问题,大多数是关于区域和TimeZoneInfo的。但愿Mono 3.0能至少解决其中的一些问题。对于普通的计算方面的事宜,以及在使用TZDB的时候,Mono都能工作得很好。当然,这些目标永远是不断变化的——我们会把更多的精力放在记录对于不同的操作系统和版本的组合,已经发现了哪些具体的问题。

查看英文原文Jon Skeet on Noda Time 1.0


给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT