1. sözdizimsel şeker
Programcılar, bazı karmaşık kodların veya mantığın birkaç satıra yazılarak kodun derli toplu ve okunabilir hale gelmesine bayılırlar. Ve bazen programlama dillerinin yaratıcıları bu konuda yardımcı olur.
Bir kısayol kullanmanıza (daha az kod yazmanıza) izin veren kaygan bir dil özelliğine sözdizimsel şeker denir . Ama dürüst olmak gerekirse, Java'da çok az var.
Java'nın yaratıcıları, Java'daki herhangi bir fazlalığı ortadan kaldırmak için ellerinden gelen her şeyi yaptılar. C++ bir şeyi 20 şekilde yapmanıza izin veriyorsa, Java bunu yalnızca tek bir şekilde yapmanıza izin verir.
Ancak ne Java programcıları ne de Java'nın yaratıcıları özgürlüğün olmamasından hoşlanmadılar. Ve bazen şeker, senin ve benim gibi sıradan insanlar için hayatı kolaylaştırır.
Bu arada, zaten bazı sözdizimsel şekerle karşılaştınız: otomatik kutulama ve kutudan çıkarma . Hadi karşılaştıralım:
uzun kod | Kompakt kod |
---|---|
|
|
|
|
|
|
Soldaki gibi uzun kod yerine sağ tarafa daha kompakt kod yazabilirsiniz. Ve akıllı Java derleyicisi, kodun kısa versiyonuna dayalı olarak kodun ayrıntılı versiyonunu üretecektir. Sözdizimsel şeker tam olarak budur.
2. Değişken türünün çıkarımı: var
anahtar kelime
Java 11'de derleyici daha da akıllı hale geldi ve artık kendisine atanan değerin türüne göre bildirilen bir değişkenin türünü belirleyebiliyor . Kodda şöyle görünür:
var name = value;
Nerede name
yeni bir değişkenin adı, değer başlangıç değeridir ve var
değişkeni bildirmek için kullanılan bir anahtar kelimedir. Ad değişkeninin türü, kendisine atanan değerin türü ile aynı olacaktır.
Örnekler:
Kodu nasıl görüyoruz? | Derleyicinin gördüğü şey |
---|---|
|
|
|
|
|
|
|
|
|
|
Derleyicinin kendisi, kendisine atanan değere göre değişkenin türünü belirler veya çıkarım yapar.
Programcılar dile böyle bir özelliğin eklenip eklenmeyeceği konusunda hararetle tartıştılar. Birçok kişi bunun var
kötüye kullanılacağından ve sonuç olarak kodun okunabilirliğinin zarar göreceğinden korkuyordu.
Bunda doğruluk payı var, bu yüzden var
kodun okunabilirliğini artırdığı yerde kullanmak en iyisidir. Örneğin, bunlar iki durumda:
Durum 1: Değişkene atanan değere bakıldığında, değişkenin türü hemen anlaşılır
kod | Açıklama |
---|---|
|
değişken birInputStream |
|
değişken birString |
Bu durumlarda kullanmamalısınız . var
Peki, değişkenin türü nedir?
kod | Açıklama |
---|---|
|
Değişkenin türünü belirlemek zordur |
|
Değişkenin türünü belirlemek zordur |
Durum 2: Değişkenin türü, kodu anlamak için önemli değil
Kodun genellikle bir değişken üzerinde metot çağırmaya ihtiyacı yoktur, örneğin bir değişken bir şeyi geçici olarak depolamak için kullanıldığında. Bu durumda, var
kesinlikle kullanmak kodun okunabilirliğini azaltmaz:
uzun kod | Kompakt kod |
---|---|
|
Akıştan meta verileri aldık stream ve depoya kaydettik storage . Değişkenin data belirli türü önemli değildir. |
altın ortalama
Şimdi aynı kodu yazmanın üç yolunu vereceğim. kullanmak var
en iyi seçenek olacaktır.
kod | Not |
---|---|
|
Çok kompakt |
|
Tam kararında |
|
Çok detaylı |
1 satırlı sürümden 2 satırlı sürüme geçiş yaparak bir değişken adı ( headerInfo
) kullanarak kodu biraz daha okunaklı hale getirdik. Artık yöntemin yalnızca meta bilgisini değil, başlık bilgisini de döndürdüğü açıktır.
Üçüncü versiyon aşırı ayrıntılı. Bunun headerInfo
a olduğu FileMetaInfo
yöntemden zaten oldukça açık getFileMetaInfo()
. Meta bilginin amacı çok daha ilginç.
3. Elmas işleciyle türü atlamak:<>
Operatör ortaya çıkmadan önce bile var
, derleyiciye toplama türlerini nasıl anlayacağını öğretme girişimleri oldu. Bu gösterimin biraz gereksiz göründüğünü kabul edeceksiniz:
ArrayList<String> list = new ArrayList<String>();
Java'nın yedinci sürümünden başlayarak, bir koleksiyon türü yazarken, bir değişken bildirirken belirtilmişse, koleksiyon öğelerinin türünü atlayabilirsiniz. Başka bir deyişle, yukarıdaki kod biraz kısaltılmış bir biçimde yazılabilir:
ArrayList<String> list = new ArrayList<>();
Gördüğünüz gibi, artık String'i ikinci kez yazmanıza gerek yok. var operatöründeki kadar havalı değil ama o zamanlar ilerleme gibi görünüyordu.
Koleksiyon tipindeki boş köşeli ayraçlar, iki açılı ayraç belli belirsiz bir elmasa benzediğinden, elmas operatörü olarak adlandırıldı.
var
Anahtar kelimenin ve elmas operatörünün aynı anda kullanılması istenmeyen bir durumdur :
var list = new ArrayList<>();
Koleksiyonda depolanan öğelerin türü hakkında hiçbir bilgi yoktur ve koleksiyon türü ArrayList < Object > olacaktır.
4. Çift kaşlı ayraçlar
Hızlı dizi başlatmayı hatırlıyor musunuz?
Değerleri kaşlı ayraçlar içinde listeledik, şöyle:
örnekler |
---|
|
|
Java'nın yaratıcıları, bir dizinin öğelerini yazmayı basitleştirmek için süslü parantez kullanma fikrini sevdiler. Peki ya koleksiyonlar?
Java'nın yaratıcıları, koleksiyonlar için de yeterince yaratıcı düşünceye sahipti ve bu da onlara çift kaşlı ayraçlı bir numara kullanmalarına izin verdi.
Şekerli | Şekersiz |
---|---|
|
|
Derleyici soldaki örnekteki gibi bir kodla karşılaşırsa sağdaki koda çevirir.
Kod çok daha kompakt hale gelmez. list
Buradaki tasarruflar oldukça önemsizdir: her seferinde yazmak zorunda değilsiniz . Değişken adı çok uzunsa bu yararlı olabilir.
Ama bir projede böyle bir kodla karşılaşırsanız şaşırmayın 🙂
GO TO FULL VERSION