Dart 一些代码风格

UpperCamelCase

每个单词的首字母都大写,包含第一个单词。用于 Classes(类名)、 enums(枚举类型)、 typedefs(类型定义)、以及 type parameters(类型参数)应该把每个单词的首字母都大写(包含第一个单词),不使用分隔符。与类型命名一样,扩展的名称也应大写每个单词的首字母(包括第一个单词),并且不使用分隔符。

class SliderMenu { ... }

class HttpRequest { ... }

typedef Predicate<T> = bool Function(T value);

extension MyFancyList<T> on List<T> { ... }

extension SmartIterable<T> on Iterable<T> { ... }

lowercase_with_underscores

除了第一个字母始终是小写(即使是缩略词),每个单词的首字母都大写。在库,package,文件夹,源文件 中使用 lowercase_with_underscores 方式命名。

一些文件系统不区分大小写,所以很多项目要求文件名必须是小写字母。使用分隔符这种形式可以保证命名的可读性。

library peg_parser.source_scanner;

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

import 'dart:math' as math;
import 'package:angular_components/angular_components' as angular_components;

import 'package:js/js.dart' as js;

lowerCamelCase

只是用小写字母单词,即使是缩略词,并且单词之间使用 _ 连接。类成员、顶级定义、变量、参数以及命名参数等 除了第一个单词,每个单词首字母都应大写,并且不使用分隔符。

在新的代码中,使用 lowerCamelCase 来命名常量,包括枚举的值。

var count = 3;

HttpRequest httpRequest;

void align(bool clearItems) {
// ...
}

const pi = 3.14;
const defaultTimeout = 1000;
final urlScheme = RegExp('^([a-z]+):');

class Dice {
static final numberGenerator = Random();
}

Dart 引入包声明顺序

  1. 把 “dart:” 导入语句放到其他导入语句之前。
  2. “package:” 导入语句放到项目相关导入语句之前。
  3. (export)语句作为一个单独的部分放到所有导入语句之后。
  4. 按照字母顺序来排序每个部分中的语句。
import 'dart:async';
import 'dart:html';

import 'package:bar/bar.dart';
import 'package:foo/foo.dart';

import 'util.dart';

export 'src/error.dart';

使用 dart format 格式化你的代码。

If 语句

一个没有 else 的 if 语句,并且这个 if 语句以及它的执行体适合在一行中实现。

if (arg == null) return defaultValue;



if (overflowChars != other.overflowChars) {
return overflowChars < other.overflowChars;
}