dart/flutter 中的代码规范

文章首发地址: https://www.jianshu.com/p/047eb78dce53

前言

最近看qq群里发的很多代码截图,感觉命名规则/文件命名都不符合规范
很多朋友都是从其他语言转向dart/flutter的,深感语言环境还需要大家共同去维护,建议还是规范化代码,这样所有人看着都会舒服
恰好dart语言官方有自己的代码规范和相关的说明,在dartlang官网上,英文好的建议阅读原文
连接地址 https://www.dartlang.org/guides/language/effective-dart/style

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

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

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

标识方案

image.png

在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

类型名称

image.png

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

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

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

image.png

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

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

导入时

image.png

当导入包时, 如果涉及到as, 一律使用小写+下划线方式

其他标识符

image.png

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

常量名称

image.png

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

缩写相关

image.png

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

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

不要使用前缀字母

image.png

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

规定代码的顺序


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

image.png

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


image.png

保证带包名的引用方式在相对路径引用之前


image.png

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


image.png

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


image.png

每个部分按字母顺序排序

格式化

image.png

使用dartfmt 程序来格式化代码

image.png

单行长度为80字符

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

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

流程控制使用花括号

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • 1、引言 数据库设计过程中表、字段等的命名规范也算是设计规范的一部分,不过设计规范更多的是为了确保数据库设计的合理...
    SnowflakeCloud阅读 40,948评论 0 48
  • android文件众多,根据名称来辨别用途很重要,因此命名要规范 这篇文章可参考:Android 命名规范 (提高...
    Near尼尔阅读 458评论 0 2
  • 参考地址 术语说明 在文档中,除非另有说明: 术语 class 可表示一个普通类,枚举类,接口或是annotati...
    该名字已被使用阅读 806评论 2 1
  • 好话谁都会说,可是怎样才说的真诚,怎样才说的有力量,怎样才说到对方的心里去却是一种能力。 朋友圈从有了点赞功能以后...
    孙大猫阅读 605评论 1 5
  • 很多时候,过于自信和对他人充满信心时,“我以为”就出来了。 说说我朋友吧。 之前出现过的b君还记得吗,我男友的好友...
    袭人归_阅读 593评论 0 0