用途:在上下文类型已经明确的前提下,把 Dart 代码中的 TypeName.memberName 改写为 Dart 3.7+ 的点简写(成员访问简写).memberName,使代码更简洁,尤其适合枚举和静态常量作值使用。
主要能力与用法:
- 应用简写:将 super.language = Language.c 改写为 super.language = .c。
- 集合保持原格式:多行列表保留换行与尾随逗号,仅替换成员,如把 Architecture.arm 等改为 <Architecture>[ .arm, ... ] 形式。
- 赋值与调用:logger.level = Level.INFO 可改为 logger.level = .INFO;hostOS = hostOS ?? OS.current 可改为 hostOS = hostOS ?? .current。
限制:
- 一次只处理 pkgs/ 下的单个包,不跨包操作。
- 不使用 .new 作为构造函数简写。
- 仅当类型从该行即可明确判断时才用简写,需要滚动或查找才能确定类型时不用。
- 不为了启用简写而给集合添加显式类型参数或给变量添加显式类型。
- 仅当变量或参数名包含类型名(或很明确的缩写)时使用;不为了简写而重命名公共 API 或大量使用处的变量/参数。
- 避免在类型推断可能脆弱的复杂上下文(如 switch 中的嵌套元组)使用。
- 不重复简写:类内已可直接访问的静态成员优先用 member 而非 .member。
- 每处理一个文件或不超过 3 个文件的小批次后,必须更新 SHORTHAND_PROGRESS.md 进度清单,完成后删除该临时文件。
验证方式:在包目录运行 dart analyze;若属于顶层 workspace,则在项目根运行 dart tool/ci.dart --all --fast;否则在包目录运行 dart test。
适用场景:Dart 3.7+ 代码库中按包逐步清理可简化的枚举/常量引用,并能接受人工逐行判断与进度留痕的团队。关于收费、价格等信息暂未提供。