Braketleri Bağlayın
Java'da ayraç yerleştirme stilinin etkilerini görselleştirmeye yardımcı olan bir oyun
Amaç Objektif olmaktır
Birkaç yıl önce, üzerinde çalıştığım yeni bir ekiple kodlama stili oluşturmaya ve üzerinde anlaşmaya varmaya yardımcı olacak yaratıcı bir yaklaşım buldum. Java programlama dilini kullanarak yeni bir projede kodlamanın başlangıç aşamasındaydık. Önceden bir ekip olarak tutarlı kod stili yönergelerine karar vermemizi ve üzerinde anlaşmamızı talep ettim. Java'daki çekişmeli kod stili tartışmalarından birine - kaşlı ayraçların nereye yerleştirileceğine - değinmek için nesnel ve yaratıcı bir argüman bulmam gerektiğini biliyordum.
Çatışma Yerine Yaratıcılığı Seçmek
"Ama herkes böyle yapıyor" akıntısına karşı yüzmek zordur. Çok saygın bir arama şirketi, belirli bir Java kodlama stiline onay damgasını bastığında daha da zorlaşır.
Belirli bir parantez yerleştirme stili için nesnel bir argüman sunmama yardımcı olması için, "Dişli Ayraçları Birleştir" adını verdiğim bir oyun yarattım. Oluşturduğum iki örnek sınıftan kod aldım ve bunları bir Powerpoint destesine yapıştırdım ve kelimenin tam anlamıyla başlangıç ve bitiş parantezlerini bağlamak için kodun üstüne çizgiler çizdim. Oyun, en sevdiğim çocukluk oyunlarımdan biri olan "Noktaları Birleştir"den esinlenmiştir.
"Noktaları Birleştir" ile ilgili harika olan şey, kuralların basit olması ve neredeyse herkesin bu oyunu okulda oynamış olmasıdır. "Ayraçları Bağlayın" da çok basittir. Her kod kapsamının başlangıç ve bitiş parantezlerini aralarına bir çizgi çizerek bağlamanız yeterlidir. Kolay.
Oyunu ekibe sundum ve bitirdikten sonra kimse “ama herkes böyle yapıyor” diye cevap vermedi. Bu, en az bir takımın küme ayracı yerleştirme stiliyle ilgili yaratıcı bir tartışmaya iyi yanıt verdiğini doğruladı.
oyunu otomatikleştirme
Arkadaşım Vladimir Zakharov'a (Vlad) bu oyundan ve daha önce kışkırtıcı bir tartışma olarak yaşadığım şeyi nasıl etkili bir şekilde etkisiz hale getirdiğinden bahsettim. Vlad'a, ona anlattığım oyunu görselleştirmek için bir Java kodu yazıp yazamayacağını sordum. Vlad görsel programlamada benden daha iyi, bu yüzden kodu benden daha hızlı tamamlayacağını biliyordum.
Vlad, bir kaynak dosyadaki parantezleri bağlamaktan bile daha iyi bir şey yaptı. Ayrıca kod bloklarını yeşil vurguyla renklendirdi. Bu, boşlukları görsel olarak vurgulama avantajına sahiptir.
Aşağıdaki bölümdeki görüntüler, Vlad'ın Eclipse Collections Kata'sından alınan gerçek kod üzerinde "Connect the Braces"in otomatik versiyonu kullanılarak oluşturulmuştur .
Uyarı! Oyun başlasın!
Aşağıdaki resimler grafiktir. Bazı geliştiriciler onları rahatsız edici bulabilir. Aşağıdaki görsellerin oluşturulmasında gerçek kaynak kodu kullanılmıştır. Bu metnin ötesine kaydırıldıktan sonra görünmeyen herhangi bir resim, yazarın değil, kaydıran kişinin sorumluluğundadır. İki "Dantelleri Birleştir" turu sırasında zarar gören herhangi bir meyve veya evcil hayvan, yazarın değil, kod stili seçimlerinin sonucudur. Akıllıca seçim. Uyarıldın!
Birinci Tur: Meyve Sayımı
İkinci Tur: PetType Enum
Dağınıklık yerine Berraklığı Seçmek
Biftekten yapılmış bir mayo giydiğimde muhtemelen az önce aç piranhalarla dolu azgın bir nehre daldığımı biliyorum. Belirli bir ayraç yerleştirme stilinin "tek gerçek stil" olduğuna herkesi ikna etmeye çalışmıyorum. Kod yazarken kesinlikle tercih ettiğim bir tarz var ve üzerinde çalıştığım her projede bunu savunmam gerekiyor. Bu oyunu kullanarak argümanımı sunduğumda, kod tarama ve okunabilirlik için estetiğin, boşlukların ve görsel izlemenin önemi hakkında sağlıklı bir tartışma yapabileceğimizi görüyorum.
Dağınıklığa netliği seçiyorum. Sinyal aşırı gürültü. Sağdaki stili seçiyorum.
Arkadaşım Vlad'dan alıntı yapmak için:
Kodu okuduğumda, genellikle “ne”, örneğin, bu sınıfın sorumlulukları nelerdir, bu yöntemin sözleşmesi nedir, bu dalı tetikleme koşulu nedir — veya “nasıl”, örneğin, görmek isterim. bu method ne yapıyor, bu dalı takip edersem ne olur vb. Neyin ve nasılın görsel olarak ayrılmış olması, kodu taramama ve dikkatimi o anda önemli olan şeylere odaklamama yardımcı oluyor.
Dikey ayraç biçimlendirme stili, imza (sınıf ve yöntem tanımları) ve uygulama (değişkenler ve kod) arasına boşluk ekleyerek "ne"yi "nasıl"dan temiz bir şekilde ayırma konusunda doğal bir etkiye sahiptir. Başlangıç ve bitiş parantezleri her zaman aynı yatay konumdadır ve değişkenlik sürekli olarak iç içe geçmiş kapsamların derinliğine bağlıdır (örn. if, for ve while gibi kontrol ifadeleri). Parantezlerle bir piramit şeklinin tabanını görmeyi beklersiniz, böylece nerede olduklarını bildiğiniz için nerede olduklarını güvenle göz ardı edebilirsiniz. Bu stilin IDE'nizde otomatik biçimlendirmeyi uygulaması ve bir CheckStyle yapısında zorlaması kolaydır.
20 yılı aşkın bir süredir Java'da bu ayraç biçimlendirme stilini kullanarak akıntıya karşı yüzüyorum. Benim yüzümden dikey parantez yerleştirme stili kullanılarak biçimlendirilmiş kod tabanlarında okumak veya çalışmak zorunda olan geliştiricilere söyleyecek bir şeyim var.
Rica ederim!
Kuralın İstisnası
Java kodlu bir kitap için Powerpoint slaytları veya metin oluştururken farklı bir parantez yerleştirme stili seçiyorum. Yalnızca bu iki basılı ortamda, neredeyse her zaman daha az kod satırını tercih eden stili seçerim. Sayfalar arasında kod kırmak istenmeyen bir durumdur. Bu, kullanılabilir dikey alan üzerindeki sınırlamalar nedeniyle yapılan bir değiş tokuştur. Uygulanan bu sınır, IDE'nizde okuduğunuz kodda veya dikey kaydırmanın gayet iyi çalıştığı GitHub veya GitLab gibi bir VCS'den kaynak okuyan bir tarayıcıda mevcut değildir.
Birçok Programcının Yedi Etkisiz Kodlama Alışkanlığı
"Connect the Braces" oyununu yarattıktan birkaç ay sonra, Kevlin Henney'den , kodlama stiliyle ilgili konuşmasında yaptığı diğer birçok harika noktanın yanı sıra, belirli bir destek yerleştirme stili için harika bir argüman sunan harika bir konuşmayla karşılaştım.
Bu nedenle, size az önce söylediğim şey, merak ediyorsanız, evet, diş tellerinizi hizalamanın doğru yolunu belirlemenin bir yolu var… objektif olarak.
Spoiler yasak. Bu konuşmayı izlemenizi şiddetle tavsiye ederim. Uyarı, bu konuşma mevcut kodlama tarzınızda yapıcı bir aksama olabilir.
Java Kod Stilinde Harekete Geçirici Mesaj
Versiyon kontrol sistemlerinde milyarlarca satırlık Java kaynak kodunu, gelecekteki bizlerimiz ve gelecek nesil geliştiriciler tarafından sürdürülmesi için bırakıyoruz. Kod stilinin netlik ve okunabilirlik üzerinde doğrudan ve ince bir etkisi vardır. Herkes kodu aynı hızda okumaz. Bir ekip olarak tartışmanız ve düşünmeniz gereken erişilebilirlik sorunları olabilir. Kod stili ne olursa olsun, herkes sonunda okuyarak kodu ayrıştırabilmelidir. Neyi nasıldan ayırmak ve aradığımız kodu bulmak için daha az döngü harcayabilirsek, bu iyi bir şey olur.
İşte bir takımda kabul edilebilir bir kodlama stili oluşturmak için kurallarım.
- Ekibinizle kod stili yönergeleri hakkında tartışmalar yapın.
- En sevdiğiniz IDE'de kodlanmış ve özelleştirilmiş otomatik biçimlendirme kurallarını kullanarak projenizde tutarlı kod stili yönergeleri uygulayın.
- Tutarsız kod stili taahhütlerini (örn. CheckStyle) bozacak otomatik bir sürekli yapı çalıştırın.
- Kod stili yönergelerinizi projenizin VCS'sinde yayınlayın.
- Yeni bir şey keşfettiğinizde veya öğrendiğinizde kod stili yönergelerinizi geliştirmeye cesaret edin ve zaman ayırın.
Kod stiliyle ilgili rasyonel ve nesnel tartışmaları kolaylaştırmaya yardımcı olması için Connect the Braces oyununu kullanmaktan çekinmeyin, özellikle Java'daki küme ayracı yerleştirme stiliyle ilgili tartışmalar için geçerli olduğu için. Bu stili beğendiyseniz ve son yedi yıldır IntelliJ IDEA for Eclipse Collections'da kullandığımız kod stili ayarlarını görmek istiyorsanız, buradan GitHub'a göz atabilirsiniz .
Zevk almak!
Eclipse Foundation'da yönetilen Eclipse Collections OSS projesinin yaratıcısı ve komisyon üyesiyim . Eclipse Collections katkılara açıktır .

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































