قراردادهای زبان Dart


در هر زبان برنامه نویسی قرارداد هایی وجود داره که برگرفته از لایبرری های استاندار خود اون زبان هست و رعایت آن ها در تیم ها باعث فهم بهتر کد برای دیگران و یکپارچگی میشود.


به اون Convention یک زبان و یا به طور کلی تر که در جاهای دیگر مثل طراحی استفاده میشود  Style Guide گفته میشه.

در دارت برای نام گذاری از سه حالت استفاده میشود:

1. UpperCamelCase

2. lowerCamelCase

3. lowercase_with_underscores



کلاس ها ٬ enum ها ٬ typedef ها و نوع پارامترهای توابع باید UpperCamelCase باشند.

class HttpRequest {}
typedef Camel = ...

همینطور در extension ها که در نسخه ۲.۷ اضافه شده از UpperCamelCase استفاده میشه.

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


نام لایبرری ها ٬ پکیج ها ٬ پوشه ها و فایل های سورس کد رو lowercase_with_underscores بنویسیم.

library peg_parser;                 // library name
import 'file_system.dart';           // imports
my_main_file.dart                    // source files
widget_test.dart                     // test files

متغیر های کلاس ها (properties) ٬ متغیرها ٬ پارامترهای توابع و حتی ثوابت (constants)

var item;                      // variables
HttpRequest httpRequest;        
void align(bool clearItems) {  // function names
}



از _ (underscore) قبل از نام ٬ فقط برای مواقعی استفاده کنید که نمیخواهید به متغیر خارج از scope خود دسترسی داشته باشید.

var _name;    //فقط در این فایل قابل دسترسی است

class Foo {
  String _name;   //فقط در این فایل قابل دسترسی است
}

در import ها باید ترتیب به شکل زیر رعایت شود:

در بالاترین جا library قرار میگیره و بعد از اون لایبرری های استاندارد Dart ٬ بعد از اون پکیج های خارجی و بعد فایل هایی که مسیر نسبی (relative path) دارند.

و در آخر هم به صورت الفبایی مرتب شده باشند.

library peg_parser;

import 'dart:async';
import 'dart:html';

import 'package:bar/bar.dart';
import 'package:foo/foo.dart';

import 'util.dart';
import 'src/error.dart';
import 'src/foo_bar.dart';


به همراه sdk دارت ابزارهایی هم نصب میشن که یکی از اون ها dartfmt هستش.

که براساس استاندارد هایی که دارد فایل شما را فرمت میکند و فضا های خالی اضافی را حذف میکند.

در ترمینال:

 $ dartfmt main.dart

در vscode:

در تنظیمات format رو سرچ کرده و گزینه Format On Save را فعال کرده.

وقتی که در فایل های خود در vscode ٬ ctrl + s را بزنید کد شما فرمت می شود.


در Android Studio و Intellij:

دوبار shift رو که بزنید صفحه بالا ظاهر میشه و گزینه ای که آبی شده رو بزنید کد شما فرمت میشه.


منبع: https://dart.dev/guides/language/effective-dart/style