好的编码风格非常重要,保持一致的命名能够让代码阅读体验更好,能够让团队协作的效率更高

标识符定义

  • 大写驼峰,例如UpperCamelCase,每个单词的首字母大写
  • 小写驼峰,例如 lowerCamelCase,第一个单词全部小写,之后每个单词的首字母大写
  • 使用下划线“_”拼接全部小写单词,例如 lowercase_with_underscores

命名规则1:统一使用大写驼峰命名类型

例如类、枚举、别名(typedefs)等使用大写驼峰,并且不使用分隔符。下面是示例:

class SliderMenu { ... }class HttpRequest { ... }typedef Predicate<T> = bool Function(T value);
包括携带参数注解也应该遵循这样的原则:class Foo {const Foo([Object? arg]);
}@Foo(anArg)
class A { ... }@Foo()
class B { ... }
如果注解没有携带参数,那么可以使用小写驼峰的方式。const foo = Foo();@foo
class C { ... }

命名规则2:类扩展使用大写驼峰

和类型一样,类扩展定义也应该使用大写驼峰:

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

命名规则3:库、包名、目录和源文件应当使用下划线“_”拼接小写单词

由于某些文件系统不区分大小写,而有的系统是区分的。因此很多项目要求文件名全部小写。这种情况下使用分隔符可读性会更高。下面是示例对比:

// 正确示例
library peg_parser.source_scanner;import 'file_system.dart';
import 'slider_menu.dart';// 错误示例
library pegparser.SourceScanner;import 'file-system.dart';
import 'SliderMenu.dart';

命名规则4:import 的别名使用下划线“_”拼接小写单词

当你要对引入的包或插件重命名时,应当使用下划线“_”拼接小写单词的形式。

// 正确示例
import 'dart:math' as math;
import 'package:angular_components/angular_components'as angular_components;
import 'package:js/js.dart' as js;// 错误示例
import 'dart:math' as Math;
import 'package:angular_components/angular_components'as angularComponents;
import 'package:js/js.dart' as JS;

命名规则5:变量名、类成员属性、参数和常量使用小写驼峰

类的成员属性、变量、函数参数、顶级定义参数和命名参数都应该使用小写驼峰方式。

// 正确示例
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();
}// 错误示例
const PI = 3.14;
const DefaultTimeout = 1000;
final URL_SCHEME = RegExp('^([a-z]+):');class Dice {static final NUMBER_GENERATOR = Random();
}

这里需要注意,很多语言都推荐常量使用下划线+全部大写字母的方式定义,但是 Dart 推荐的是小写驼峰形式。这是因为大多数情况下全部大写的可读性差,尤其是对于像 CSS 颜色那样的枚举值;常量有可能会更改为普通变量,这样可能增加名称修改。

命名规则6:缩写命名规则

对于缩写单词,如果字符多的时候全部大写会很奇怪,例如 HTTPSFTP 这样看起来显然没有 HttpsFtp 的可读性好。但是对于那种两个字母的缩写,推荐根据可读性决定是否要全部大写还是大写驼峰,比如 IO这类通用的可以写成 IO,而ID 的话写成 Id 可读性也不差。下面是一个对比示例。

// 正确示例
class HttpConnection {}
class DBIOPort {}
class TVVcr {}
class MrRogers {}var httpRequest = ...
var uiHandler = ...
Id id;// 错误示例
class HTTPConnection {}
class DbIoPort {}
class TvVcr {}
class MRRogers {}var hTTPRequest = ...
var uIHandler = ...
ID iD;

命名规则7:参数列表中未使用的参数使用,_标识

有些回调方法只使用部分参数,这个时候可以将未使用的参数使用下划线替换,明确表示这个参数不会使用。而如果有多个参数没被使用的话,可以依次使用多个下划线标识。下面是一个例子:

futureOfVoid.then((_) {print('Operation complete.');
});

这个指导原则只适用于匿名方法或局部方法。而对于声明式函数不应该这么做,即便是不使用也需要有正确命名,以保持参数语义明确。

命名规则8:仅对私有类成员属性使用下划线标识。

Dart 使用下划线开头标识类成员为私有属性,顶级定义的变量是文件局部变量。因此仅对这类使用下划线标识。同时,对于局部变量、参数和局部方法这些并没有私有成员的概念,因此没必要使用下划线开头,避免引起误解。

命名规则9:不要使用前缀字母

有些编程语言会建议使用一些特殊的字母标识变量,例如数值类的使用 k 开头。这种约定一方面挺难持续遵循,而且对可读性的帮助也不大。下面是对应的示例:

// 正确示例
defaultTimeout// 错误示例
kDefaultTimeout

参考连接

dart语言命名规范相关推荐

  1. python语言在命名上是什么敏感的_一文轻松掌握python语言命名规范规则

    和C/C++.Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性增强,易于自己和其他协作者在以后的拓展中理解代码的意义,从而 ...

  2. python语言命名规则-一文轻松掌握python语言命名规范规则

    和C/C++.Java等语言一样,python在命名上也有一套约定俗成的规则,符合规范的命名可以让程序的可读性大大增加,从而使得代码的逻辑性增强,易于自己和其他协作者在以后的拓展中理解代码的意义,从而 ...

  3. 重命名变量类型名c语言,C语言命名规范-SEK-101022.doc

    C语言命名规范-SEK-101022,c语言命名规范,c语言变量命名规范,c语言函数命名规范,c语言变量命名规则,c语言标识符命名规则,c语言命名规则,c语言函数命名规则,c语言重命名文件,c语言变量 ...

  4. vc 中C 语言命名规范(转)

    一.程序风格:         1.严格采用阶梯层次组织程序代码:         各层次缩进的分格采用VC的缺省风格,即每层次缩进为4格,括号位于下一行.要求相匹配的大括号在同一列,对继行则要求再缩 ...

  5. scala语言命名规范

    希望做到程序语言标准化,对于形成良好编码习惯及后续代码阅读都有好处,记录如下几个点: 区分大小写 -  Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不同的含义. ...

  6. html语言书写注意事项,CSS命名规范参考及书写注意事项

    CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ ...

  7. C语言中定义加号的数据类型,C/C++知识点之c语言基础数据类型及命名规范

    本文主要向大家介绍了C/C++知识点之c语言基础数据类型及命名规范,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助.1. 常量是程序运行期间不能被改变的量; 变量代表一个存储区域,存 ...

  8. java语言中的标识符_Java语言基本语法(一)————关键字标识符(Java语言标识符命名规范Java语言的包名、类名、接口名、变量名、函数名、常量名命名规则 )...

    一.关键字 关键字的定义和特点 定义:被Java语言赋予特殊含义,用做专门用途的字符串(单词). 特点:关键字中所有字母均为小写 下面列举一些常用的关键字. 用于定义数据类型的关键字:byte.sho ...

  9. 定义变量和常量的规范 c语言,C语言编程规范教材及练习(标识符命名与定义 变量 宏、常量 表的达式).pptx...

    C语言编程规范教材及练习(标识符命名与定义 变量 宏.常量 表的达式) C语言编程规范教材C语言编程规范工作组 201104目录标识符命名与定义 变量宏.常量表达式标识符的命名要清晰原则3.1 标识符 ...

  10. c语言标识符的规范,初识C语言-声明和使用变量、标识符的命名规范以及基本数据类型...

    常量:是在程序中保持不变的量 变量:编写程序时,常常需要将数据存储在内存中,方便后面使用这个数据或者修改这个数据的值.通常使用变量来存储数据.使用变量可以引用存储在内存中的数据,并随时根据需要显示数据 ...

最新文章

  1. Filter Effects - 使用 CSS3 滤镜处理图片
  2. SpringMVC @RequestParam参数乱码的问题
  3. 产品经理 - 学习书籍
  4. Linux账号和权限管理详解(超详细示例操作)!
  5. HTTP缓存详解之etag
  6. Spring 2.X 中AOP的简明教程
  7. 页面闲置一段时间后,跳转
  8. 目标检测第5步:如何在Windows 10系统下,搭建YOLOv5(5.0)环境?保姆级,没有人比这个更详细了(更新时间2022.3.22)
  9. text文字垂直居中_CSS垂直居中,你会多少种写法?
  10. Mybatis(11)连接池基本介绍
  11. 一起来学jquery!
  12. UVA545 LA5263 Heads【对数】
  13. 在MACBook笔记本上通过Safari 访问EBS系统
  14. Linux基础知识总结一
  15. 在OpenLava中探索Fairshare调度
  16. win10“无法完成操作,因为文件包含病毒或潜在的垃圾软件”解决办法
  17. PPT:人工智能在物流与供应链中的应用
  18. 大学计算机信息技术教程电子书资源,教与学中用好教材《大学计算机信息技术教程》.pdf...
  19. 如何制作一寸、二寸、六寸照片。以后不用再去照相馆了!!! 转~版本更新...
  20. 从业务开始:一招攻破数据分析思路大难题

热门文章

  1. xposed框架_Xposed框架安装、使用以及插件开发
  2. 【python 走进NLP】机器学习和深度学习情感分类模型
  3. canvas贝塞尔曲线爱心_贝塞尔曲线之爱心点赞代码全解析!| CSDN 博文精选
  4. 几种常见的距离计算公式
  5. 14565B简单使用教程
  6. 【C++】模板(函数模板,类模板,模板的特化,模板的分离编译)
  7. html微信怎么转发,微信朋友圈怎么转发别人的文章(链接、视频、图片、文字)
  8. 做一个古诗词的html页面,制作一个古诗词的网页
  9. 基于巴法云平台的天猫精灵控制开关
  10. 【STM32Cube笔记】16-STM32Cube个性化定制