dart系列之:dart代码最佳实践
简介
每种语言都有自己的代码风格,这种代码风格是跟语言特性息息相关的。如果在编码的过程中遵循这种统一的编码规则,会给我们的业务带来非常多的便利。
同样的,对应dart而已,也有属于自己的编码风格,一起来看看吧。
命名规则
一般来说,这个世界上有三种命名规则,分别是UpperCamelCase,lowerCamelCase和lowercase_with_underscores.
UpperCamelCase表示的是驼峰格式,也就是首字母大写,其他的字母小写。
而lowerCamelCase也是驼峰格式,不同的是它的第一个单词的首字母是小写的。
lowercase_with_underscores则是将单词用下划线进行连接。
对于类,typedef,枚举这些类型,一般都使用的是UpperCamelCase模式:
class ClassRoom {}
typedef Predicate<T> = bool Function(T value);
对于类的实例来说,使用lowerCamelCase:
const classRoom = ClassRoom();
对于方法名来说,也使用lowerCamelCase:
void main() {
}
之前我们讲到了dart 2.7引入的extension,extension也需要使用UpperCamelCase:
extension StringCompare on String { ... }
对于libraries, packages, 目录和源文件来说,使用lowercase_with_underscores,如下所示:
library common_convert.string_convert;
import 'lib_one.dart';
import 'lib_two.dart';
如果要将import的lib进行重命名,则需要使用lowercase_with_underscores,如下所示:
import 'lib_one.dart' as lib_one;
对于某些回调函数中的参数,如果并没有使用到的话,则可以用_来代替:
futureOfVoid.then((_) {
print('Operation complete.');
});
如果是private属性,则推荐在名字前面加上_,表示它是一个私有值。
import中的顺序
在dart中,我们需要使用到其他的package,一般来说我们在编码过程中并不会特别注意到import的顺序。
不过dart对于import的顺序也是有推荐的。
首先 “dart:”,需要放在所有其他的import之前:
import 'dart:html';
import 'package:bar/bar.dart';
而"package:" 需要放在内部项目引用之前:
import 'package:foo/foo.dart';
import 'util.dart';
如果需要导出的话,export需要和import区分开:
import 'src/foo_bar.dart';
export 'src/error.dart';
然后按照上面提到的顺序对具体的import按字母表的顺序进行排序。
格式化
对于dart来说,dart语言本身是不识别空格的,但是对于人类来说,需要通过空格来格式化代码,从而达到可良好阅读的目的。
为了统一格式,dart提供了dart format命令.
虽然dart format命令为你做了99%的工作,但是还有1%的工作是你需要自己做的 。
比如:一行不超过80个字符,所有的流控制语句都用大括号括起来等等其他一些要注意的工作。
总结
以上就是dart中的代码风格总结。
本文已收录于 http://www.flydean.com/27-dart-style/
最通俗的解读,最深刻的干货,最简洁的教程,众多你不知道的小技巧等你来发现!
欢迎关注我的公众号:「程序那些事」,懂技术,更懂你!
相关文章
- dart系列之:dart代码规范实践指南
- JVM系列之:通过一个例子分析JIT的汇编代码
- 线程系列06,通过CLR代码查看线程池及其线程
- C#程序集系列01,用记事本编写C#,IL代码,用DOS命令编译程序集,运行程序
- iOS 11开发教程(十八)iOS11应用视图之使用代码添加按钮
- 使用 SVN Hook 实现服务器端代码自动更新
- 《JAVA代码审计》(1)JAXB血案之 XML外部实体注入漏洞(XXE)
- 《操作系统真象还原》——0.8 代码中为什么分为代码段、数据段?这和内存访问机制中的段是一回事吗
- iOS 图片压缩方法的示例代码
- Qt开源作品10-代码统计组件
- SwiftUI 绘图之绘制自定义形状并动画展示(对勾图形含代码)
- 【手撕代码系列】JS手写实现Promise.race
- 【手撕代码系列】JS手写实现Promise.all
- 【Vue】Mock.js的使用教程,入门级(附代码和案例)
- Vim技能修炼教程(11) - 代码折叠
- AngularJS-系统代码的配置和翻译
- webpack高级概念,CSS文件的代码分割 与压缩(系列八)
- 提高代码质量系列之一—尽可能少写注释
- 谷歌为什么把上十亿行代码都放在一个仓库里
- iOS开发一行代码系列:一行搞定输入框
- iOS开发 - 通过代码获取沙盒启动图片
- ESP32S3系列-- Mac无法通过串口烧写代码问题
- 深入理解JavaScript系列(45):代码复用模式(避免篇)
- Aruduino un0 spi oled官方代码