写点什么

Dart 1.8:采访 Google 工程师 Seth Ladd

  • 2014-12-26
  • 本文字数:1364 字

    阅读完需:约 4 分钟

Google 近期发布了其开源Web 编程语言 Dart 的 1.8 版本。该版本带来了对枚举的实验性支持,Google 的 Dart 开发倡导者 Seth Ladd 介绍说,枚举是请求最多的特性之一。为了解该特性相关的更多信息,以及 Dart 项目的最新信息,InfoQ 采访了 Ladd。

InfoQ: Seth,你提到枚举是 Dart 中请求最多的特性之一,为什么说枚举这么好呢,缺乏枚举会有什么不便吗?为什么有人这么关心这个特性?

Ladd:枚举可以帮助开发者用最少的代码清晰地表达其意图,还可以帮助工具捕获潜在的 bug。开发者可以方便地使用枚举来命名一组相关的术语或值。

对于喜欢看代码的开发者,我们先看一个例子。在引入枚举之前,开发者必须像下面这样指定来自业务中的状态(OPEN、INPROGRESS 和 CLOSED):

复制代码
// 在引入枚举之前
class FormState {
static const FormState OPEN = const FormState._(0);
static const FormState INPROGRESS = const FormState._(1);
static const FormState CLOSED = const FormState._(2);
final int value;
const FormState._(this.value);
static const List<formstate> values = const [OPEN, INPROGRESS, CLOSED];
}</formstate>

而有了枚举的适当支持,代码简洁了很多:

复制代码
enum FormState { OPEN, INPROGRESS, CLOSED }

新的语法可以帮助开发者识别潜在的 bug。枚举经常用在 switch 语句中。为确保开发者处理了枚举中所有可能的状态,Dart 工具可以在缺失显式的 case 语句时给出警告。

InfoQ:枚举支持目前的描述还是“实验性特性”。那如何确定实验是否取得成功呢?

Ladd:之所以将枚举标记位“实验性特性”,这是因为,一方面语言规范已经完成,还在等待 ECMA TC52 的批准;另一方面,我们还希望我们所有的工具都能正确处理枚举。我们希望开发者现在就开始使用枚举,并报告发现的实现中存在的问题。我们期待尽快去掉“实验性”的标签。

InfoQ:在你看来,社区对枚举的实验性支持反应如何?

Ladd:Dart 1.8 还非常新,反馈还在收集。然而,枚举是社区要求最多的特性之一,所以我们非常激动地想看到开发者使用它。有些开发者还要求支持将整数值赋给枚举值,未来的 ECMA TC52 会议会讨论这个特性请求。

InfoQ:除了枚举,Dart 1.8 还有其他一些变化。你可以给读者详细介绍下吗?

Ladd:在 Dart 1.8 中,添加了新的 JsonUtf8Encoder,以帮助开发者编写性能更好的服务器。我们注意到,将 JSON 解码为 UTF8 这种操作很常见,所以我们希望提供一个优化的解决方案。

API 也有一些小变化,主要是为提高开发效率。

InfoQ:InfoQ 的读者对 Dart 1.9 可以有哪些期待呢?对于 2.0 版本,有哪些特性我们可以先睹为快吗?

Ladd:我们正在努力实现 async / await,这个特性可以帮助开发者编写异步代码,而且是看上去更像同步代码的异步代码。这意味着减小了进入“回掉黑洞”的机会。

关于 Dart 2.0,目前还没有什么可以分享的。按照我们的期望,1.9 版本之后会是 Dart 1.10。

InfoQ:你还有什么想要跟大家分享的吗?

Ladd:希望开发者参加我们的第一届 Dart Summit ,将于 2015 年 4 月在旧金山举行。大会是学习 Dart 方方面面知识的好机会,可以直接跟我们的工程师和 Dart 社区交流。大会现在也在开放征集演讲提议

Dart 团队也欢迎大家向该项目做出贡献。InfoQ 的读者可以通过报告 bug、回答 StackOverflow 上的问题以及提交代码来做贡献。更多信息,可以参见该页面

2014-12-26 04:252102
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 151.1 次阅读, 收获喜欢 35 次。

关注

评论

发布
暂无评论
发现更多内容

许式伟:Go+ 演进之路

七牛云

golang 编程语言 go+

对接企业微信,客户关系管理也可以很简单!

CRMEB

python 中Mixin混入类的用法

杨彦星

Python

Room:又要写业务代码了?看看我吧,给你飞一般的感觉!

编程的平行世界

数据库 Android; android jetpack

RocketMQ系列一:入门级使用演示

hum建应用专家

云计算 RocketMQ

CRMEB Pro v1.4,让用户体验更出彩!

CRMEB

JAVA编程规范之集合处理

源字节1号

软件开发 后端开发

龙蜥社区招募推广大使&体验官啦!| 人人都可以参与开源

OpenAnolis小助手

开源 龙蜥社区 社区建设 官网 体验官

【答疑解惑】 裁员浪潮中,N+1 到底指什么?

面试官问

互联网裁员 N+1

LeetCode-111. 二叉树的最小深度(java)

bug菌

Leet Code 7月月更

手机怎样控制led显示屏发视频?

Dylan

ipad 手机 wifi LED LED显示屏

微信内H5页面唤起小程序&App

南城FE

前端 微信开发 7月月更

DBPack 读写分离功能发布公告

峨嵋闲散人

分布式事务 分库分表 读写分离 dbmesh Database Mesh

【LeetCode】最长的斐波那契子序列的长度Java题解

Albert

LeetCode 7月月更

泛云桌面关键技术分析

A池伟

云桌面 算力网络

Python 入门指南之交互式输入行编辑历史回溯

海拥(haiyong.site)

Python 7月月更

SpringBoot自动装配原理

急需上岸的小谢

7月月更

java零基础入门-综合案例(File类+递归)

喵手

7月月更

【C语言】进阶指针night

謓泽

7月月更

Android/Unity大乱斗-完整双方集成交互指南

芝麻粒儿

android Unity 7月月更

爱奇艺加入龙蜥社区,携手打造多元化视频生态底座

OpenAnolis小助手

开源 爱奇艺 龙蜥社区 CLA 社区建设

技术分享| HTTP 代理

anyRTC开发者

https 音视频 网络协议 HTTP

QT | VS2017 + Qt5.14.2环境搭建

YOLO.

环境搭建 vs Qt Creator 7月月更

软件研发效能需求价值流分析专题

思码逸研发效能

研发效能 软件研发

浅谈 Slack Channel 支持的一些提高工作效率的特性

汪子熙

远程办公 即时通讯 SAP Slack 7月月更

服务网格中 sidecar 流量治理与多协议嗅探

博文视点Broadview

蛋糕可以一刀切,研发需求可以吗? | 敏捷实践

LigaAI

程序员 敏捷 产品经理 需求分析 敏捷管理

web前端培训如何使用CSS自定义属性实现骨架屏

@零度

CSS 前端开发

激情的开头,大意的结局,Python反爬加更,好友求助米哈游的API,给他安排上

梦想橡皮擦

Python 爬虫 7月月更

有证书有目录!|海泰密码服务平台

电子信息发烧客

Dart 1.8:采访Google工程师Seth Ladd_JavaScript_James Chesters_InfoQ精选文章