Flutter - 365 Plan (001) : Dart 代码规范

Flutter 365 计划,计划在未来的 365 天,每天都学一点 Flutter 相关的知识,希望未来能成为这个领域的专家。
今天的主题是:Dart 代码规范

Flutter 应用是使用 Dart 语言进行开发,所以不管语言怎么样,首先了解下相关的代码相关的规范是很有必要的。

代码风格

其实大体上和前端 JS 的代码规范差不多,如果你是从 Java 转过来的话,还是有不少需要注意的地方。

在 Dart 语言中,命名方式有三种风格

  1. UpperCamelCase 首字母大写的驼峰命名法
  2. lowerCamelCase 首字母小写的驼峰命名法
  3. lowercase_with_underscores 全部小写,单词间用下划线分割命名法

UpperCamelCase

  1. Classes 类名
  2. enums 枚举类型
  3. typedefs 类型定义
  4. type parameters 类型参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class SliderMenu { ... }

class HttpRequest { ... }

typedef bool Predicate<T>(T value);

class Foo {
const Foo([arg]);
}

@Foo(anArg)
class A { ... }

@Foo()
class B { ... }

lowerCamelCase

  1. Class members 类成员变量
  2. top-level definitions 顶级定义(变量、函数等)
  3. variables 变量
  4. parameters 参数
  5. named parameters 命名参数
  6. constant variables 常量
1
2
3
4
5
6
7
var item;

HttpRequest httpRequest;

align(clearItems) {
// ...
}

lowercase_with_underscores

  1. file_names 文件名
  2. library_names 库名
  3. library_prefixes 库导入的前缀
1
2
3
4
5
6
7
8
9
library peg_parser.source_scanner;

import 'file_system.dart';
import 'slider_menu.dart';

import 'dart:json' as json;
import 'dart:math' as math;
import 'package:javascript_utils/javascript_utils.dart' as js_utils;
import 'package:js/js.dart' as js;

单词缩写

要把 超过两个字母的缩略词首字母缩略词 当做一般单词来对待,

  1. 比如 HyperText Transfer Protocol(Http),应该写成 Http 而不是 HTTP
  2. 比如 identification(Id), 应该写成 Id,而不是 ID
  3. 比如 Database(DB),就应该是 DB,而不是 Db

_ 代表私有的

不要对非私有的变量加上 _ 前缀,以免引起混淆。

不需要前缀字母

在 Java 社区喜欢用前缀 m 表示私有变量,在 Dart 中不需要这样。

排序

为了保证代码文件前面部分的整洁,Dart 规定了每个部分出现的顺序,每个部分之间通过空行来分割。

  • 要把 dart: 导入语句放到其他导入语句之前
1
2
3
4
5
import 'dart:async';
import 'dart:html';

import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
  • 要把 package: 导入语句放到相对导入语句之前
1
2
3
4
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';

import 'a.dart';
  • 推荐 把第三方 package: 导入语句放到其他语句之前
    如果你使用了多个 package: 导入语句来导入自己项目中的文件和第三方的文件,推荐把自己的导入语句和其他的导入语句使用空行分开。
1
2
3
4
5
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';

import 'package:myapp/io.dart';
import 'package:myapp/util.dart';
  • 要把导出(export)语句放到所有导入语句之后的部分
1
2
3
4
import 'src/error.dart';
import 'src/string_source.dart';

export 'src/error.dart';

格式化

  • 使用 dartfmt 来格式化您的代码

相关文档

Effective Dart: Style

Gavin Liu wechat
欢迎您扫一扫上面的二维码,订阅我的微信公众号!