命名规范

• 文件名:一律为小写加下换线
• 文件夹名:通常是小写单词,小驼峰法使用较少,不推荐使用下划线连接法
• 类名:首字母大写,驼峰式,后续每个单词首字母大写,建议为文件名的大驼峰写法
• 方法名:首字母小写,驼峰式,后续每个单词首字母大写
• 变量名:首字母小写,驼峰式,后续每个单词首字母大写,const可以使用大写+下划线的方式

代码规范
• if else的大括号,尽可能不省略,提高可读性
• 省略new关键字
• 定义方法入参使用@required和assert来提高可读性
• 定义工具函数时,对入参必须进行手动判空,提高代码健壮性
• 在Page页面的build方法里尽量用最少的代码勾勒出整体视图,具体widget细节抽离到函数中或者封装到组件去
• 业务逻辑所需要的特殊常量(魔数)抽离到类变量定义中,不要充斥到项目的各个角落
• 避免一行代码过长,灵活使用代码格式化快捷键

编译期间warning
import

• 未使用到的导入:Unused import
• 重复导入:Duplicate import
建议在开发期间不定期优化项目导入
方式:右键文件或文件夹,Optimize Imports,点击run

immutable

通常是这一类的描述:This class (or a class that this class inherits from) is marked as '@immutable', but one or more of its instance fields aren't final:

Flutter设计StatefulWidgetStatelessWidget建议成员属性都是finalorconst的,修改即可,一般项目中常为构造器传参,变量都放在state中

Local variable

变量或方法定义而未使用:The value of the local variable '****' isn't used,删除无关定义即可

注释

dart建议使用///注释符号,不然会提示warning:Prefer using /// for doc comments,不要问我为什么dart源码是斜杠+* 😓

/**
 *
 *
 /
///不建议这样↑,建议改成如下↓
///
///
///

PS:丰富注释

在代码注释中可以使用中括号引用到相关类

///this is a document about [Map]
int count(Map map) => map?.length ?? 0;

return Future

方法未返回Future对象:This function has a return type of 'Future<dynamic>', but doesn't end with a return statement
• 返回一个Future
• 将该方法的返回定义修改为void or 不定义(即dynamic)

命名不规范

Name non-constant identifiers using lowerCamelCase

详情参照该手册的命名规范部分

字符串插值

避免在字符串插值中使用不必要的大括号:Avoid using braces in interpolation when not needed

var a = 'age';
var b = 'is';
var c = '18';
/// 推荐
print('$a $b $c');
/// 不推荐
print('$a $b ${c}');
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐