Flutter 零基础入门中文教学 - 08 开发规范
本节目标
VSCode 格式化
规范精要
使用小写加下划线来命名库和源文件
1 2 3 4
| library peg_parser.source_scanner;
import 'file_system.dart'; import 'slider_menu.dart';
|
优先使用小驼峰法作为常量命名
1 2 3 4 5 6 7
| const pi = 3.14; const defaultTimeout = 1000; final urlScheme = RegExp('^([a-z]+):');
class Dice { static final numberGenerator = Random(); }
|
所有流控制结构,请使用大括号
1 2 3 4 5
| if (isWeekDay) { print('Bike to work!'); } else { print('Go dancing or read a book!'); }
|
Doc 注释
使用///文档注释来记录成员和类型。
导入 lib 下文件库,统一指定包名,避免过多的1 2 3
| ```dart package:flutter_go/
|
使用相邻字符串连接字符串文字
1 2 3
| raiseAlarm( 'ERROR: Parts of the spaceship are on fire. Other ' 'parts are overrun by martians. Unclear which are which.');
|
优先使用模板字符串
1
| 'Hello, $name! You are ${year - birth} years old.';
|
在不需要的时候,避免使用花括号
1 2
| 'Hi, $name!' "Wear your wildest $decade's outfit."
|
不要使用.length 查看集合是否为空
1 2
| if (lunchBox.isEmpty) return 'so hungry...'; if (words.isNotEmpty) return words.join(' ');
|
遍历一个序列
1 2 3
| for (var person in people) { ... }
|
不要显式地将变量初始化为空
1 2 3 4 5 6 7 8 9 10 11 12
| int _nextId;
class LazyId { int _id;
int get id { if (_nextId == null) _nextId = 0; if (_id == null) _id = _nextId++;
return _id; } }
|
在不需要的时候不要用 this
1 2 3 4 5 6 7 8 9 10 11
| class Box { var value;
void clear() { update(null); }
void update(value) { this.value = value; } }
|
尽可能使用初始化的形式
1 2 3 4
| class Point { num x, y; Point(this.x, this.y); }
|
不要使用 new
1 2 3 4 5 6 7 8 9 10
| Widget build(BuildContext context) { return Row( children: [ RaisedButton( child: Text('Increment'), ), Text('Click!'), ], ); }
|
优先使用 async/await 代替原始的 futures
1 2 3 4 5 6 7 8 9 10 11 12
| Future<int> countActivePlayers(String teamName) async { try { var team = await downloadTeam(teamName); if (team == null) return 0;
var players = await team.roster; return players.where((player) => player.isActive).length; } catch (e) { log.error(e); return 0; } }
|
当异步没有任何用处时,不要使用它
1 2 3
| Future afterTwoThings(Future first, Future second) { return Future.wait([first, second]); }
|
参考
© 猫哥
https://ducafecat.tech
邮箱 ducafecat@gmail.com / 微信 ducafecat / 留言板 disqus