This content originally appeared on DEV Community and was authored by Gülsen 🦋
It doesn’t require an awful lot of skill to write a program that a computer understands.
The skill is writing programs that human understand.
— Robert C. Martin
Bölüm 1 : İsimlendirme Kuralları ✨
UpperCamelCase kullanılması gereken durumlar:
Class isimleri, enum tipleri, typedef'ler ve tip parametreleri UpperCamelCase olmalıdır.
örnek:
class SliderMenu { ... }
class HttpRequest { ... }
typedef Predicate<T> = bool Function(T value);
class Foo {
const Foo([Object? arg]);
}
@Foo(anArg)
class A { ... }
@Foo()
class B { ... }
Extension (uzantı) adlarında da UpperCamelCase kullanılır.
extension MyFancyList<T> on List<T> { ... }
extension SmartIterable<T> on Iterable<T> { ... }
lowercase_with_underscores kullanılması gereken durumlar:
Kütüphane, paket, dizin ve kaynak dosyaları isimlendirirken lowercase_with_underscores biçimini kullanın.
Bazı dosya isimleri büyük/küçük harf duyarlı olmadığı için dosya adlarının tamamının küçük harf olması gerekir. Kelimeleri ayırmak içinse _ alt çizgi kullanabilirsiniz.
library peg_parser.source_scanner;
import 'file_system.dart';
import 'slider_menu.dart';
Kitaplık öneki belirtirken de lowercase_with_underscores kullanın.
import 'dart:math' as math;
import 'package:angular_components/angular_components' as angular_components;
import 'package:js/js.dart' as js;
lowerCamelCase kullanılması gereken durumlar:
Class üyeleri, üst düzey tanımlar, değişkenler, parametreler ve adlandırılmış parametreler isimlendirilirken ilk kelime dışındaki her kelimenin ilk harfini büyük olmalıdır.
var count = 3;
HttpRequest httpRequest;
void align(bool clearItems) {
// ...
}
Costant'larınızı isimlendirirken de lowerCamelCase kullanın.
const pi = 3.14;
const defaultTimeout = 1000;
final urlScheme = RegExp('^([a-z]+):');
class Dice {
static final numberGenerator = Random();
}
SCREAMING_CAPS:
Zaten kullanan bir dosyaya veya kitaplığa kod eklerken SCREAMING_CAPS adlandırmasını kullanın.
İki harften uzun olan kısaltmaları büyük harfle yazın
class HttpConnection {}
class DBIOPort {}
class TVVcr {}
class MrRogers {}
var httpRequest = ...
var uiHandler = ...
var userId = ...
Id id;
Kullanılmayan geri arama parametreleri için , _, vb. kullanmayı tercih edin.
Bu size bir değerin iletildiği ancak onu kullanmanız gerekmediği geri aramalarda (callbacks) yaygın bir kullanımdır.
Bu durumda, kullanılmayan parametreyi _ olarak adlandırmak iyi bir yoldur.
Fonksiyonda birden fazla kullanılmayan parametre varsa, ad çakışmalarını önlemek için ek alt çizgi kullanın: _, __, vb.
futureOfVoid.then((_) {
print('Operation complete.');
});
Bir diğer örnek:
[1,2,3].map((_) => print('Hello'));
Not: Bu yönerge yalnızca local ve anonim fonksiyonlar için geçerlidir.
Üst düzey fonksiyonlar ve method bildirimler (method ddeclarations) bu bağlama sahip değildir, bu nedenle parametreleri kullanılmasa bile, her bir parametrenin ne için olduğu açık bir şekilde adlandırılmalıdır.
Private olmayan tanımlayıcılar için baştaki alt çizgiyi kullanmayın:
Dart, üyeleri ve üst düzey bildirimleri private olarak işaretlemek için bir tanımlayıcıda (identifier) önde gelen bir alt çizgi kullanır.
Kullanıcılar böylece bir _ alt çizgi gördüklerinde bunun bir private elaman olduğunu bilirler.
Local değişkenler, parametreler, local fonksiyonlar veya kitaplık önekleri için private kavramı yoktur. Bunlardan birinin alt çizgi ile başlayan bir adı olduğunda, okuyucuya kafa karıştırıcı bir sinyal gönderir. Bunu önlemek için, bu isimlerin başında alt çizgi kullanmayın.
Yanlış kullanım: import 'dart:core' as _core;
Doğru kullanım: import 'dart:core' as core;
Yanlış kullanım:
void print(String _name) {
var _size = _name.length;
...
}
Doğru kullanım:
void print(String name) {
var size = name.length;
...
}
Ön ek harfleri kullanmayın
Hungarian notasyonu ve diğer şemalar, derleyicinin kodunuzu anlamanıza yardımcı olmak için fazla bir şey yapmadığı BCPL zamanında ortaya çıkmıştır. Dart size bildirimlerinizin türünü, kapsamını, değişebilirliğini ve diğer özelliklerini söyleyebileceğinden, bu özellikleri tanımlayıcı adlarında belirtmenize gerek yoktur.
kullanın: defaultTimeout
kullanmayın: kDefaultTimeout
Her bölüm'ü (section) boş bir satırla ayırın:
Tek bir linter kuralı, tüm sıralama yönergelerini yönetir: directives_ordering.
paket importlarını relative importlarından önce yapın
kötü:
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
import 'dart:async'; // LINT
import 'dart:html'; // LINT
kötü:
import 'dart:html'; // OK
import 'package:bar/bar.dart';
import 'dart:async'; // LINT
import 'package:foo/foo.dart';
iyi:
import 'dart:async'; // OK
import 'dart:html'; // OK
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
Export'ları tüm import işlemlerinizden sonra ayrı bir bölümde belirtin (bir satır boşluk bırakarak)
kötü:
import 'src/error.dart';
export 'src/error.dart'; // LINT
import 'src/string_source.dart';
iyi:
import 'src/error.dart';
import 'src/string_source.dart';
export 'src/error.dart'; // OK
Bölümleri alfabetik olarak sıralayın
kötü kullanım:
import 'package:foo/foo.dart';
import 'package:bar/bar.dart';
import 'foo/foo.dart';
import 'foo.dart';
iyi kullanım:
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
import 'foo.dart';
import 'foo/foo.dart';
Dart format kullanarak kodunuzu biçimlendirin
Tüm akış kontrol ifadeleri için küme parantezleri kullanın.
Doğru kullanım:
if (isWeekDay) {
print('Bike to work!');
} else {
print('Go dancing or read a book!');
}
Tek satırlık sorgularda isterseniz küme parantezlerini atlayabilirsiniz.
if (arg == null) return defaultValue;
References:
https://dart.dev/tools/linter-rules#directives_ordering
https://dart.dev/guides/language/effective-dart/style
https://medium.com/upday-devs/basics-of-clean-code-flutter-project-ui-part-b7fa93c31775
This content originally appeared on DEV Community and was authored by Gülsen 🦋
Gülsen 🦋 | Sciencx (2022-02-19T13:15:51+00:00) Flutter Temiz Kod Prensipleri: Bölüm 1 💫 🌌 ✨. Retrieved from https://www.scien.cx/2022/02/19/flutter-temiz-kod-prensipleri-bolum-1-%f0%9f%92%ab-%f0%9f%8c%8c-%e2%9c%a8/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.