Dart Flutter中的代码规范

Posted OpenFlutter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dart Flutter中的代码规范相关的知识,希望对你有一定的参考价值。

前言

我这里仅粗略翻译和加入一些自己的理解

图片均来自于上述 url 对应的页面中 当前 dart 版本为 2.0 版本,日期为 2018 年 08 月 22 日 可能会在未来有改动,到时请以最新文档为准

文档中图片的绿色部分为正例,右上角带 good标识 红色是反例,右上角带 bad标识

标识方案

在 dart 有 3 种常规标识方案 第一个为大写字母开头的驼峰式 如 UserInterface 每个词的首字母为大写 第二个是小写开头的驼峰式,如 testRun,第一个单词是小写,后续每个单词首字母大写 第三个是每个单词均为小写,以下划线分隔,如 user_response

总结

如果不想往下看具体的图片和翻译,直接看这里

文件名: 小写+下划线 类型名(类名,函数类型名):大写开头驼峰 变量名(包含 const final 常量):使用小写开头驼峰, 项目有特殊要求 const 可以使用大写+下划线的方式,如同 java中一样 导包 as 后的名称为小写+下划线 不要用匈牙利命名法中的 kXXXX 这样的命名方式,应该去掉 k 超过两位的英文缩写一律按该单词为普通小写单词处理,使用小写

导包有顺序要求,且每"部分"间空行分隔开,每部分内按字母排序,按如下顺序排序 dart sdk 内的库 flutter 内的库 第三方库 自己的库 相对路径引用

先全部 import 再 export,不要交替进行

使用 dartfmt 工具格式化 dart 文件代码 dartfmt-w lib/ flutter 可以用 flutter format lib单行字符建议不要超过 80 个 流程控制语句无论如何都使用花括号包裹,即使只有单行

格式化个人建议:

建议不要使用 idea/as/vscode 的自动储存格式化作为交付

因为 idea/vs 有自己的格式化工具,并不是使用的 dartfmt,这样会造成代码交付格式不统一,写代码过程中可以使用以方便提高阅读性,但每次代码 commit 前建议使用 dartfmt -w lib/ 来格式化代码,以便于项目代码风格的统一,flutter 用户使用 flutter format lib

这段话在之前是没问题的,目前来看,插件中会默认使用 dartfmt 作为格式化工具, 当然也可以通过设置解除, 不过统一的代码风格会带来代码交付的便利性, 所以还是建议使用 dartfmt 进行格式化的

类型名称

Dart Flutter中的代码规范

适用于类名,注解名,typedef 定义的函数名

这里有一个特例,当你的注解是一个 const 的常量时,使用 @foo的方式作为注解

库名称,文件名用小写+下划线

Dart Flutter中的代码规范

使用小写+下划线方式命名 library,文件名

原因如下: 某些文件系统不区分大小写,因此许多项目要求文件名全部为小写。使用分隔字符允许名称仍以该形式可读。使用下划线作为分隔符可确保名称仍然是有效的 Dart 标识符

导入时

Dart Flutter中的代码规范当导入包时, 如果涉及到 as, 一律使用小写+下划线方式

其他标识符

Dart Flutter中的代码规范

包含顶级成员,类成员,方法内成员,参数名,命名参数名,一律使用小写驼峰式

常量名称

Dart Flutter中的代码规范

建议使用小写驼峰式命名 但是你的项目中如果使用大写+下划线分割单词的方式,则可以继续使用这种方式 这里有个小说明:最初 dart 中采用的大写+下划线方式,但是后来有一些变量需要修改为非 const 变量,就需要修改为小写驼峰式,后一律使用小写驼峰式

缩写相关

Dart Flutter中的代码规范

超过两位的使用常规方式,两位以内使用大写

在小写驼峰式中,会出现一些约定俗成的缩写,如 http ftp io等,这些在英文词法中都应该是大写,但大写连续会破坏可读性,如 HTTPSFTP,你不知道是 HTTPS FTP 还是 HTTP SFTP,所以采用如上图绿色的方式来命名

不要使用前缀字母

Dart Flutter中的代码规范

匈牙利命名法中使用缩写开头的小写驼峰命名法时,是因为当时编辑器无法很好帮助理解你的代码,这样命名法能够很好的帮助你去理解代码,现在 dart 语言中,编辑器可以很好的通过声明等方式帮你理解你的代码,故,不要使用前缀字母,如上图绿色

规定代码的顺序


为了使文件保持整洁,我们有一个规定代码顺序。每个“部分”应该用空行分隔。

Dart Flutter中的代码规范

保证 dart 的导入顺序在所有其他包之前


Dart Flutter中的代码规范保证带包名的引用方式在相对路径引用之前


Dart Flutter中的代码规范

首先 import 第三方的包 导入自己的包在后面一个单独的部分


Dart Flutter中的代码规范

全部导入完毕后,再 export 导出


Dart Flutter中的代码规范每个部分按字母顺序排序

格式化

Dart Flutter中的代码规范

使用 dartfmt 程序来格式化代码

单行长度为 80 字符

可读性研究表明,长行文字难以阅读,因为当你移动到下一行的开头时,你的眼睛必须走得更远。这就是报纸和杂志使用多列文本的原因。

如果你真的发现自己想要超过 80 个字符的行,我们的经验是你的代码可能过于冗长而且可能更紧凑。主要罪犯通常是 VeryLongCamelCaseClassNames。问问自己,“该类型名称中的每个单词是否告诉我一些关键或防止名称冲突?”如果不是,请考虑省略它。

流程控制使用花括号


以上是关于Dart Flutter中的代码规范的主要内容,如果未能解决你的问题,请参考以下文章

FlutterFlutter 混合开发 ( Dart 代码调试 | Flutter 单独调试 | 混合模式下 Flutter 调试 )

如何写好Flutter代码?

自动完成/智能感知不适用于 VSCode 中的 dart/flutter

列表视图中的收藏按钮问题 Flutter/Dart

使用git_hooks库助力Flutter团队编码规范

(Flutter/Dart) 如何修复使用 [ ] 显示列表中的数字