基於項目實戰整理的一份 Flutter 代碼規範與目錄規範v1.0

項目規範與文章地址html

目錄規範與命名

Lib 
├──page 落地頁     
│   └──user 頁面模塊文件夾   
│       └──login 頁面落地頁文件夾 
│            └──user_login.dart => class UserLoginPage 後綴爲page爲落地頁 惟一入口     
│                   └──user_login_button.dart => class UserLoginButton 非公共部分頁面子組件   
├──component 通用組件   
│        └──Modal 
│            └──alert.dart => class ModalAlertComponent  
├──store 數據集中管理 
│    ├──index.dart 實例化Provider export model類
│    ├──proto pb協議轉換代碼
│    ├──service pb協議 yyp協議 等等轉義成 dart方法
│    ├──model
│    │    ├──user_model.dart => class UserModel
│    │    └──index.dart => export all models
│    └──object
│         └──user_object.dart => class UserObject
├──helper 公共方法   
│    └──index.dart 常規方法、通用方法、全局方法能夠用過這個入口export 避免重複引入、能夠做用經過用方法入口
├──config 配置中心 
│    ├──index.dart 配置變量與切換方法  
└──router 路由 
     └──  頁面映射配置、observe 方法導出
複製代碼

標識符

在 Dart 中標識符有三種風格:git

  • 大寫駝峯:每一個單詞的第一個字母大寫,包括第一個單詞。
  • 小寫駝峯:每一個單詞的第一個字母大寫,除了 第一個單詞一直小寫,即便第一個單詞是縮寫。
  • 小寫加下劃線:只使用小寫字母,即便是縮寫,而後使用下劃線_分隔。

類型名使用大寫駝峯

類,枚舉,自定義類型和參數類型,應該使用大寫駝峯,且不能使用分隔符。github

class SliderMenu {  }

class HttpRequest {  }

typedef bool Predicate<T>(T value);

class Foo {
  const Foo([arg]);
}

@Foo(anArg)
class A {  }

@Foo()
class B {  }

// 若是註解類的構造函數沒有參數,能夠建立一個單獨的小寫駝峯常量。
const foo = const Foo();

@foo
class C {  }
複製代碼

庫和源文件名使用小寫加下劃線

library peg_parser.source_scanner;

import 'file_system.dart';
import 'slider_menu.dart';
複製代碼

其它標識符使用小寫駝峯

var item;

HttpRequest httpRequest;

void align(bool clearItems) {
  // ...
}
複製代碼

推薦常量名使用小寫駝峯

const pi = 3.14;
const defaultTimeout = 1000;
final urlScheme = new RegExp('^([a-z]+):');

class Dice {
  static final numberGenerator = new Random();
}
複製代碼

超過兩個字母的首字母縮略詞以及縮寫詞,應該大寫

HttpConnectionInfo
uiHandler
IOStream
HttpRequest
Id
DB
複製代碼

導入順序

各部份內按字母順序排序bash

// 在其它導入以前導入 「dart:」
import 'dart:async';
import 'dart:html';
// 在相對導入以前導入 「package:」
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
// 在其它導入前導入第三方 「package:」
import 'package:my_package/util.dart';
//
import 'util.dart';
// 在全部導入以後的單獨部分指定導出
export 'util.dart';
複製代碼

dartfmt 格式化

官方使用 dartfmt 格式化代碼。dom

避免一行的長度超過 80 個字符

可讀性研究代表,過長的文本不適合閱讀,由於當你看到下一行開始的時候眼睛移動的距離過大。這就是爲何新聞和雜誌使用多列的文本。async

對全部流程控制結構使用大括號

if (isWeekDay) {
  print('Bike to work!');
} else {
  print('Go dancing or read a book!');
}

// 有一個例外是:if 語句沒有 else,符合條件只有一行,能夠省略大括號。
if (arg == null) return defaultValue;
複製代碼
相關文章
相關標籤/搜索