Dart 代码风格

发布时间 2023-06-23 20:26:12作者: 白乾涛

本文地址


目录

Dart 代码风格

命名风格

UpperCamelCase

  • Classes -- 类名
  • enums -- 枚举类型
  • typedefs -- 类型定义
  • type parameters -- 类型参数
  • extension -- 扩展
class SliderMenu {}
typedef Predicate<T> = bool Function(T value);
extension MyFancyList<T> on List<T> {}

lowercase_with_underscores

  • package
  • 文件夹
  • 源文件
file_system.dart
import 'package:js/js.dart' as js;

lowerCamelCase

  • 类成员
  • 顶级定义
  • 变量
  • 参数
  • 命名参数
  • 常量 [推荐]
  • 枚举的值 [推荐]
const pi = 3.14;
const defaultTimeout = 1000;

缩略词和缩写词

  • 缩略词和缩写词要像普通单词一样,仅首字母大写
  • 两个字母的缩写词,比如 ID,与其他常规单词一样,首字母大写即可
    • 例外情况:类似 IO 这样的 缩略词 要全大写
class HttpCon {}  // Http
class DBIOPort {} // DB, IO    
class TVVcr {}    // TV

var httpRequest;  // http
var uiHandler;    // ui
var userId;       // Id
Id id;            // id

其他规则

  • 未使用的回调参数优先使用______
  • 非私有的标识符不要使用前导下划线 -- 局部变量、参数、局部函数或库前缀,没有私有的概念
  • 不要使用前缀字母
  • 不要显式地命名库,例如 library my_library;

顺序

  • 要把 dart: 导入语句,放到其他导入语句之前
  • 要把 package: 导入语句,放到项目相关导入语句之前
  • 要把 export 导出语句,放到所有导入语句之后
  • 要按 字母顺序 来排序每个部分中的语句

格式化

  • 要使用 dart format 命令格式化你的代码
  • 格式化规则
  • 避免单行超过 80 个字符
    • 考虑缩短局部变量名,或者将表达式抽取为一个新的局部变量
  • 要对所有流控制结构使用花括号
    • 例外:一个没有 else 的 if 语句,并且这个 if 语句以及它的执行体适合在一行中实现,可以不用括号
dart format .          // 格式化当前目录下所有 Dart 文件
dart format a b/c.dart // 格式化指定目录下,或指定的 Dart 文件

if (arg == null) return;

2023-06-23