void main() {
/*
Final ve const kavramına bakalım şidmi de. Final ve const değişken tanımlarken kullanabileceğimiz birer terim. Değişkeni istediğimiz şekilde tanımlayabiliriz. Sadece baş kısmına final ve const terimini eklersek o değişken program içerisinde hiçbir şekilde yeni bir değer alamayacaktır. İlk değer olarak ne girdiysek o değerde kalacaktır. Ne biz nede bir başkası o değere müdahale edemeyecektir. Bunu sabit değerlerimiz varsa onları tanımlarken kullanabiliriz. Örneğin tcNo müşterinin adı soyadı vb. gibi bilgilerde bu terim kullanılabilir.
Yani sonrasında kişinin tcsine ilave edeceğimiz bir şey olmaması gerekir. Tahmin edersiniz ki bir kişinin TC numarası zamanla değişmez. :) Böyle bir bilginin tutulduğu değişkenin bu şekilde bir koruma altına alınması iyi bir şey. Ana amaç değişmemesi gereken değerleri korumaya almak aslında. Olurda yanlışlıkla kimse değiştiremesin. Şimdi de kullanımına bakalım.
*/
const String tcNo = "123456789012";final String tcNu = "123456789012";
/*
Yukarıda tcNo ve TcNu değişkenlerini string tanımlayabiliriz. Nihayetinde matematiksel bir işlem yapmayacağız gibi:) Ve final ve const ile sabitliyoruz ki bu değer kişiye ait özel ve sonradan değişime uğramasın. Tanımlama yaparken const veya final kelimesi sonra değişken türü sonra değişken ismi ve en son olarak da değişken değerini giriyoruz.
*/
const sadeceConst = "deneme";final sadeceFinal = 15;
/*
Yukarıda göreceğiniz üzere değişken türünü belirtmeden de final ve const ile tanımlama yapabiliyoruz. Burada da dart anlıyor ne tür bir değişken tanımladığımızı. Zaten ilk değerden sonra değişkenin değeri değişmediği ve türü de sabit kaldığı için bir problemle karşılaşmıyoruz.
*/
const int productId = 12;final int UserId = 250000;
/*
Değişmemesi gereken datalarımız varsa bunları const ve final tanımlamalıyız. Yukarıdaki örnekte olduğu gibi mesela. Ürün numarası veya müşteri numarası kolayına değişmez sistemlerde. Bunları const veya final tanımladık mı sonradan programın akışında yanlışlıkla bile olsa değişmesini engellemiş oluyoruz.
*/
// tcNo = 12; // Bakın burada yeni değer atamaya çalışınca hata veriyor.// tcNu=15; //Bu atama olmaz sen bunu final veya const tanımladın diyor.
/*
Yukarıdaki örneklerde baştaki çift bölü yorumları silerseniz sistem tarafından hata alacaksınız. İki değişkenin de değerini daha yukarıdaki satırlarda biz girmiştik. Şimdi ise onlarda değişiklik yapmaya yani yeni değer atamaya çalıştığımızda hata ile karşılaşıyoruz. Hatta program run olmuyor bile. Çalışmaya başlamadan direkt hatayı veriyor.
*/
/*
Şimdi neden iki tane sabitleme keywordü var diye bir soru gelebilir aklımıza. Biraz da ona bakalım. Yani bu final ve const arasındaki fark nedir?
Final: Final run time yani program çalışmaya başladığı anda değer alabiliyor. Biz programı run yaptık ve final değişkenine dedik ki senin değerin bazı işlemlerden sonra gelecek ve o değer olacak. Veya değerini program çalışmaya başlayınca alacaksın. Final bunu seve seve kabul eder. Yani kodlar çalışmaya başladıktan sonra değer alabiliyor. Önce de alabilir ama const'tan bir farkı budur. Run Time demek Çalışma Zamanı demek. Program kodları derlemiştir sonra çalışmaya başlamıştır.
Const: Const'ta ise değişkenin değeri program çalışmaya başlamadan önce verilmesi gerekir. Kod derlenmeye başladı mı orada değer girilmiş olmalı. Compile Time demek Derleme Zamanı demek. Program kodları derlemiştir ancak çalışmaya daha geçmemiştir.
Finalde proje başladı o anda diyelim saat verisini aldı işledi.
Const'ta ise önceden girilmiş değerleri alır proje başladıktan sonra değer verilemez. İkisinde de sonradan değer değiştirmek olanaksızdır. Lakin biri ilk anda ilk diğerini alır diğeri ise program çalıştıktan sonra ilk değerini alabilir.
const constant kelimesinin kısa halidir. Sabit demektir. Final ise son anlamında değerlendirilebilir.
const >Compile Time Derleme Zamanı
final >Run Time Çalışma Zamanı
*/
/*
Const ve Final'de ekstra tip belirtmeden de değişken tanımlayabiliriz. Var tipindeki gibi. Yukarda değinmiştik şimdi de ona bir örnek daha verelim. Aşağıdaki gibi.
*/
const pi = 3.14; // doubleolduğunu sistem anlıyor.final piDegeri = 3; //int olduğunu sistem anlıyor.
/*
Önceden bilinen bir değerimiz varsa pi sabiti gibi bunu const tanımlamak daha mantıklıdır. Çünkü programın derlenmesinde dart dili onu hesaplamak için derlemede zaman kaybetmeyecek ve zaman kazanmış olacaktır :). Çünkü zaten biliniyor. Ancak diyelim ki zaman damgası kullanacağımız zaman bu final olmak zorundadır. Çünkü program çalışmalı ve ilgili işlemin tam gerçekleşeceği sırada o zaman değeri kullanılmalıdır. Bu işlem final ile yapılmalıdır. Run time da yani
derlenip çalışmaya başladıktan sonra değer alması gerektiği için burada da final kullanmalıyız. Const verilemez çünkü const derleme sırasında değer alıyor ve bize run time değer lazım. Şu ortak bir nokta ikisinde de değer aldıktan sonra o değişkenin değerini sonra değiştirmek olanaksızdır. Sonraki cümledeki kod ile örnek yapacağız. DateTime.now(); bu kod bize anlık zaman bilgisini veriyor
*/
final zaman = DateTime.now();print(zaman); //ne zaman çalışırsa bu satır, o tarihi verir :) tam bilemem :)
/*
Yukarıda zaman diye bir final değişken oluşturup değer olarak çalıştığı zamanı girdik. Aşağıda örnek bir çıktı var. Zamana mekana göre değiştiği için örnek olarak benzer bir çıktı verecektir.
2022-05-25 16:21:10.749167 buna benzer birşey çıktı alıyoruz.
*/
const sayi1 = 5;const sayi2 = 10;const sonuc = sayi1 + sayi2;
/*
Yukarıdaki örneği inceleyelim. Const değişkenlere yine const değerler atanabilir. Bu kod çalışınca hata vermez. sonuc değişkeni 20 olur. Ama bundan sonra başka bir değer almaz. Kod derlenirken yine const olan değişkenlerin toplamı sonuc değişkenine atanıyor lakin bu atama ilk ve son atama. Bundan sonra const artık değişmez. Const olmayan değişkenleri ekleseydik hata verecekti. Bunu örneklendirmiyorum.
*/
int aSayisi = 15, bSayisi = 20;final toplam = aSayisi + bSayisi;
/*
Yukardaki örneğe bakalım şimdi de. Final değişkenlere ise normal değişkenler atanabilir. Burada iki adet int değişken tanımladık ve bunların toplamını final bir değişkene atama işlemi yaptık. Program hata vermeyecektir.
*/
/*
Bu işlemler listelerde de aynı bu şekilde olmaktadır. Const bir listeye eleman eklemek istiyorsanız ekleyeceğiniz elemanlar da const olmak zorunda. İlk eleman ekleme işlemlerinden sonra const bir listeye eleman ekleyip çıkaramazsınız. İlk bahsi geçen ekleme ilk derleme zamanında olan ekleme. Sonrasında değişiklik olmuyor yani.
Final bir listeye değişken eklemek istiyorsanız normal değişkenleri de ekleyebilirsiniz. Sonrasında da listeye ekleme ve çıkarma işlemleri yapabilirsiniz.
*/
/*
Dikkat ettiyseniz değişken isimlerini verirken camel case şeklini kullanıyorum. Bununla birlikte bir kaç tane daha yazım stili var. İsteyen istediği gibi yazar. Herkese kimse karışamaz :) Şimdi en temel kullanılan yöntem camel case dir. Bunu kullanırsanız neredeyse dünya standartlarında yazıyorsunuz demektir. Buna alıştınız mı hem kendi hem de dünyadan herhangi bir kodu okurken daha hızlı okuyup anlarsınız. Birde yazım birliği oluşmuş olur. Şimdi bütün hepsi için
birer örnek yapayım. Değişken isimlerine dikkat edin değerlerine değil.
Bir bilgi daha. Aslında bazı yazılı olmayan ama herkesin kabul ettiği standartlar oluyor. Hatta yazılım dilinden yazılım diline bile değişebiliyor. Bunu uzmanlaştıkça o dilde yazılmış büyük kodları gördükçe sizde fark edeceksinizdir ilerde. Tamamen kafadan örnek vereceğim ben. İşte şu dilde ilkel değişkenler için camel case kullanırlar. Veya ne bilim şu verileri tutacak değişkenler şu şekilde yazılır gibi :)
Şimdi kısaca bakalım.
camelCase: İlk kelime küçük harfle başlar ve sonraki her kelimenin
sadece baş harfi büyük yazılır.
PascalCase: İlk kelimeden itibaren her kelimenin baş harfi büyük yazılır.
kebab-case: Bütün kelimelerin baş harfleri küçük yazılır lakin
arada tire - işareti kullanılır.
snake_case: Bütün kelimelerin baş harfleri küçük yazılır
ancak arada alt tire _ kullanılır.
*/
String buBirDenemeYazisi = "Camel Case Kullanıldı";String BuBirDenemeYazisi = "Pascal Case Kullanıldı";//String bu-bir-deneme-yazisi = "Kebap Case Kullanıldı";
/*
Bir üstteki örnekte Kebap Case kullandık yalnız kebap case hata veriyor. Dart dili - (tire)'ye kızıyor galiba :) Yorum için bırakılmış çift bölüyü kaldırıp hatayı görebilirsiniz.
*/
String bu_bir_deneme_yazisi = "Snake Case Kullanıldı";
/*
Değişken isimlendirirken temel bir kural da verilen değişken isminin
anlamlı olmasıdır. Ben doğum tarihini bir değişkende tutacaksam bu
değişken adının anlamlı olması lazım. Sadece yukardaki yazım stilleri ile okunurluğunu artırmak değil amaç. Amaç hem okunurluk hem de anlamlandırma.
Şimdi doğum tarihi için şöyle birkaç örnek görelim.
int dt;
int d;
int dtrh;
int t;
int dogum;
int tarihi;
int birTarih;
int tarih;
int bla bla bla;
işte bunlar hep hatalı :) Ne olduklarını müneccim olsa zor anlar.
int dogumTarihi;
Bu ise doğru bir örnek. Kodu okurken ne olduğunu anlamak zor olmasa gerek :) Hem camel case hem anlamlı hem sadece tarih alacak :) ve int. Süper. Daha ne olsun.
*/
}
Sadece Kodlar
void main() {const String tcNo = "123456789012";final String tcNu = "123456789012";const sadeceConst = "deneme";final sadeceFinal = 15;const int productId = 12;final int UserId = 250000;// tcNo = 12;// tcNu=15;const pi = 3.14; // doubleolduğunu sistem anlıyor.final piDegeri = 3; //int olduğunu sistem anlıyor.final zaman = DateTime.now();print(zaman); //ne zaman çalışırsa bu satır, o tarihi verir :)const sayi1 = 5;const sayi2 = 10;const sonuc = sayi1 + sayi2;int aSayisi = 15, bSayisi = 20;final toplam = aSayisi + bSayisi;String buBirDenemeYazisi = "Camel Case Kullanıldı";String BuBirDenemeYazisi = "Pascal Case Kullanıldı";//String bu-bir-deneme-yazisi = "Kebap Case Kullanıldı";String bu_bir_deneme_yazisi = "Snake Case Kullanıldı";}
Categories:
Dart Programlama Dili
Index
0 comments:
Soru, Görüş, Öneri ve Eklemek İstediklerinizi Yazabilirsiniz...