Sorunuz için teşekkürler! Tam sorumluluk reddi, Dart ekibinde çalışıyorum.
Dart'ın bugün sahip olabileceği en iyi avantaj, C #, Java, C ++ ve çoğu JavaScript geliştiricisine aşina olmasıdır. Birçok geliştiricinin dili (sınıf tabanlı OO, sözcük kapsamı, tanıdık sözdizimi) ve Dart'ın karşılamayı ve aşmayı hedeflediği araçları (kod tamamlama, yeniden düzenleme, kod gezinme, hata ayıklama) çevresinde bir dizi beklenti vardır.
İsteğe bağlı statik tipler. Prototip yaparken veya sadece küçük scriptler yazarken, bir ton statik tip kullanmıyorum. Sadece ihtiyacım yok ve törenle boğuşmak istemiyorum. Bununla birlikte, bu senaryoların bazıları daha büyük programlara dönüşür. Scriptler ölçeklerken, sınıfları ve statik tip açıklamaları isteme eğilimindeyim.
Suçu ispatlanana kadar masum. Dart, derleme zamanı hatasıyla sonuçlanan durumları en aza indirmeye çalışır. Dart'daki birçok koşul, programınızın çalışmasını durduramayan uyarılardır. Niye ya? Web geliştirme modasına uygun olarak, geliştiricilerin biraz kod denemelerine, yeniden yüklemeye basmalarına ve ne olduğunu görmelerine izin vermek zorunludur. Geliştiricinin, önce kodun bir köşesini test etmeden önce tüm programın doğru olduğunu kanıtlaması gerekmemelidir.
Sözlüksel kapsam. Alışık değilseniz, bu harika. Basitçe söylemek gerekirse, değişkenlerin görünürlüğü ve hatta bu bile program yapısı tarafından tanımlanmaktadır. Bu, geleneksel web programlamada bir grup bilinmezliği ortadan kaldırır. Yeniden bağlama fonksiyonlarına gerek yok tutmak için bu ne düşündüğünüzü veya bekliyoruz.
Dile pişirilmiş gerçek sınıflar. Çoğu web geliştirme çerçevesi bir çözüm sunduğu için çoğu geliştiricinin sınıfta çalışmak istediği açıktır. Bununla birlikte, A çerçevesinden bir "sınıf", geleneksel web geliştirmede B çerçevesiyle uyumlu değildir. Dart doğal olarak sınıfları kullanır.
Üst seviye fonksiyonlar. Java'nın acı verici bir yanı, her şeyin bir sınıfa konması gerektiğidir. Bu biraz yapaydır, özellikle de birkaç fayda fonksiyonunu tanımlamak istediğinizde. Dart'da, işlevleri herhangi bir sınıfın dışında, en üst düzeyde tanımlayabilirsiniz. Bu, kütüphane kompozisyonunun daha doğal hissetmesini sağlar.
Sınıfların üstü kapalı arayüzler var. Açık arabirimlerin kaldırılması dili basitleştirir. Artık her yerde IDuck tanımlamaya gerek yok, şimdi tek ihtiyacınız olan bir sınıf Duck. Her sınıfın üstü kapalı bir arayüze sahip olduğundan,MockDuck implements Duck
Adlandırılmış kurucular. Yapıcılara gerçekten okunabilirliğe yardımcı olan isimler verebilirsiniz. Örneğin:var duck = new Duck.fromJson(someJsonString)
Fabrika inşaatçıları Fabrika modeli oldukça yaygındır ve bunun dilde pişmiş olduğunu görmek güzel. Bir fabrika yapıcısı, bir singleton, bir önbellekten gelen bir nesne veya bir alt tipteki nesne geri verebilir.
İzole eder. Gone, dişler arasında değişken durum paylaşma günleridir (hataya açık bir teknik). Dart izolatı, ayrı bir işlemde veya iş parçacığında çalışabilen izole edilmiş bir bellek yığınıdır. Bağlantı noktaları üzerinden mesaj göndererek iletişimi izole eder. Dart VM'deki çalışmayı izole eder ve HTML5 uygulamalarında Web çalışanlarını derleyebilir.
Dart, JavaScript'i derler. Bu kritik bir önem taşımaktadır; çünkü JavaScript, web’in lingua franca’sıdır. Dart uygulamaları modern web üzerinde çalışmalıdır.
Güçlü takım Dart projesi aynı zamanda bir editör sunar. Kod tamamlama, yeniden düzenleme, hızlı düzeltmeler, kod gezinme, hata ayıklama ve daha fazlasını bulacaksınız. Ayrıca IntelliJ, bir Dart eklentisine sahiptir.
Kütüphaneler. Dart kodunu kolay adlandırma ve yeniden kullanılabilirlik için kitaplıklar halinde düzenleyebilirsiniz. Kodunuz bir kitaplığı içe aktarabilir ve kitaplıklar yeniden dışa aktarabilir.
Dize enterpolasyonu. Bu sadece bir dizge oluşturmayı kolaylaştıran güzel bir özellik:var msg = "Hello $friend!";
noSuchMethod Dart dinamik bir dildir ve rastgele yöntem çağrıları ile başa çıkabilirsiniz noSuchMethod()
.
Jenerik. "Bu bir elma listesidir" diyebilmek, aletinize size yardımcı olmak ve olası hataları erken yakalamak için çok daha fazla bilgi verir. Neyse ki, Dart'ın jenerikleri muhtemelen alıştığınızdan daha basit.
Operatör aşırı yükleniyor. Dart sınıfları, +
ya da gibi operatörler için davranışı tanımlayabilir -
. Örneğin, gibi bir kod yazabilirsiniz new Point(1,1) + new Point(2,2)
.
Bunları söyledikten sonra, dışarıda daha birçok JavaScript kütüphanesi var.
Şahsen, internette birçok dil için yer olduğuna inanıyorum. Eğer uygulama harikaysa ve modern tarayıcıların çoğunda çalışıyorsa, hangi dilde yazdığı umurumda değil. Siz, geliştirici, mutlu, üretken ve internette yayınladığınız sürece, önemli olan! :)