Javascript adlandırma kuralları


12

Java geçmişindeyim ve JavaScript'te yeniyim. Aşağıdaki örnekte olduğu gibi tek karakter parametre adları kullanarak birçok JavaScript yöntemi fark ettim.

doSomething(a,b,c)

Beğenmedim, ancak bir JavaScript geliştiricisi, dosya boyutunu küçültmek için yapıldığına ikna etti, JavaScript dosyalarının tarayıcıya aktarılması gerektiğini belirtti.

Sonra kendimi başka bir geliştiriciyle konuşurken buldum. Bana Firefox'un sayfayı daha hızlı yüklemek için değişken adlarını kısaltma yolunu gösterdi. Bu, web tarayıcıları için standart bir uygulama mıdır?

JavaScript'te programlama yaparken izlenmesi gereken en iyi uygulama adlandırma dönüşümleri nelerdir? Tanımlayıcı uzunluğu önemlidir ve eğer öyleyse, ne ölçüde?


13
Tarayıcıların değişken isimlerini değiştirdiğinden şüpheliyim. Varlığında, evalgüvenli değil (evet, evalkorkunç, ancak standardın bir parçası ve bir optimizasyon için standart derlemeyi atmazsınız) ve trafiği azaltmada en ufak bir işe yaramaz - yine de tam dosyayı gönder.

4
Sıklıkla geliştiricilerin kısa değişken isimlerinin avantajlarını tartıştığını gördüm. Onları dinleme. Bu neredeyse her zaman "İyi bir isim icat etmek için çok başparmaklıyım" veya "bu kadar çok karakter yazmak için çok tembelim" için bir bahane.
Doc Brown

@DocBrown: Ben bile beğenmedim. JavaScript uzmanı olmadığım için en iyi uygulamayı bilmek istedim.
ManuPK

Günün sonunda anlamlı yöntem adlarını kullanmak için belki de 50-100KB değerinde ek verilerden bahsediyor muydunuz? 100KB bir hız sorununa neden olursa, çözmeye çalışmaya değmez, çünkü yeterince büyük bir kullanıcı havuzu bu sorunu yaşayamaz.
Ramhound

Yanıtlar:


26

Sen geliştiriciler kendilerini olduğunu göreceksiniz değil kısa değişken adları kullanarak. Gelişirken anlamlı ve ayrıntılı değişken isimleri kullanıyorlar.

Sonra , derleme / bırakma sürecinde, yazdıkları kod , bir web sitesini hızlandırmak için en iyi uygulama olarak dosyanın boyutunu en aza indirmek amacıyla bir minifier / obfuscator üzerinden çalıştırılır . Performans konusunda çok önem veriyorsanız , bu isteğe bağlı bir adımdır . Çoğu küçük web sitesi bunu yapmaz.

Sen , bir geliştirici olarak, olmamalıdır bakım küçültme / gizleme süreci hakkında; kodunuzu okunabilir, anlamlı, iyi belgelenmiş ve iyi yapılandırılmış olacak şekilde yazın. Sonra Performansta bu kadar ilgilenmeye eğer (isteğe bağlı,! Unutmayın) kodu minize için serbest bırakma sürecine bir minifier / obfuscator tanıtmak (boşluk, yeni satırlar, yorum vb kaldırmak) ve onu karartmak için (örneğin kısaltın değişken adları). Şaşkınlığa karşı minyatürü açıklayan iyi bir makale burada bulunabilir .

Ayrıca, Masaüstü FireFox olacak değil değişken adları kesecek dönemi . Değişken adlarının kesilmesi, sayfa indirme işlemini hızlandırmak için vardır. FireFox dosyayı aldığında, zaten indirilmiştir, bu yüzden buna gerek yoktur. Arkadaşınız bunu yapan bir eklenti çalıştırabilir; bu durumda, onu kaldırmasını söyleyin, çünkü işe yaramaz.

Tamamlama için, bazı (mobil) tarayıcılar, talep ettiğiniz kaynakların yanıtlarına müdahale eden ve sizin için sıkıştıran (JavaScript dosyalarının küçültülmesi de dahil olmak üzere) orta adam sunucularını kullanma seçeneğine sahiptir . Sıkıştırma işleminin sunucuda yapıldığını (yani sayfayı indirmeden önce ), bu nedenle dosyayı indirdikten sonra tarayıcıda (soruda önerildiği gibi) değil, daha küçük bir dosya indirmenin potansiyel faydası olduğunu unutmayın. Bu tür mobil tarayıcılar Opera Mini'yi ve Google Chrome'un daha yeni sürümlerini içerir (en azından iOS'ta; Android'den emin değilim). Daha fazla bilgi için buraya bakın .


11

Hayır, tüm tarayıcılar performansa yardımcı olması için JavaScript'i otomatik olarak kısaltmaz.

Bununla birlikte, JavaScript durumunda, işlem hızı veya güvenliğindeki kazançlar için kod okunabilirliğini / sürdürülebilirliğini feda etmemelisiniz, çünkü obfuscator adı verilen araçlar ve bu amaçla tasarlanmış shinkers (veya kompresörler) adı verilen diğer araçlar vardır .

Unutmayın, önceden optimize etmeyin. Sayfanız yeterince hızlı yükleniyorsa ve JavaScript'inizde aşırı hassas içeriğiniz yoksa endişelenmeyin. Değişkenlerinize anlamlı adlar verin. Kod okunabilirliği, sürdürülebilirlik açısından son derece önemlidir ve nadiren feda edilmelidir.

Bazı iyi JavaScript kodlama kurallarına başvurmak istiyorsanız, bunları kullanmanızı öneririz .



1

JavaScript'te çok uzun süre çalıştım.

Tüm değişkenler için Macarca Notasyonu kullanmak zorunda olduğunuz bir adlandırma standardımız vardı .

Tamam gibi görünüyordu. Bunu kullanmaya karşı davalar olduğunu biliyorum, ama bizim için iyi çalıştı. Özellikle bir şeyler bulmanız gereken devasa JavaScript dosyalarınız olduğunda.

Erken optimizasyona karşı dikkatli olurum. Gerçekten çok daha hızlı çalışmayan dağınık kod ile sonuçlanacaksınız.


5
Macarca Gösterim? Bu eski okul. Macarca Notasyon eski bir gelişme rahatlığıdır ve zamanla artık önerilmemektedir.
13:12

2
Biraz kullanma eğilimindeyim, ancak sadece jquery tarafından sarılmış değerler için, bir $ ile başlayacağım. Macarca gösterimle ilgili sorun, insanların size bir programın matematikleri yerine "int" ve "String" cinsinden yazdığını söylerdi
Zachary K

"Özellikle bir şeyler bulmanız gereken devasa JavaScript dosyalarınız olduğunda." -- Seni duyuyorum. Ancak Macarca gösterim sadece yapışan bir sıva ... uzun vadede yardımcı olmayacak, sadece bir şeyin türünü değiştirmeniz gerektiğinde karışacak, ancak tüm değişken önekleri değiştirmek için zamanınız yok. GWT'nin kendi IMO'suna girdiği her şeyi otomatikleştirmek.
funkybro

1
Notasyonu dilin gevşekçe yazılan yönlerini "kırmak" olarak kullanarak satın almam gerekmiyor. Elbette, türü değiştirdiğinizde adı değiştirmeniz gerekir, ancak ne yaptığınızı takip edebilmeniz için yine de yapmak iyi bir şey olacaktır . Çirkin yönleri olduğunu biliyorum. Ancak, gevşek yazılan bir dilde BÜYÜK (yüz binlerce satır koddan bahsediyorum) projesinde çalışmışsanız, bazı durumlarda yolunuzu daha hızlı bulmanıza yardımcı olabilir. Tarihli olduğunu söyleyerek, vs gerçekten OP slove çalışıyordu çekirdek sorunu ele almaz.
Alan Delimon

1
Macarca gösterim, insanların nedenini gerçekten anlamadan hemen reddettikleri şeylerden biridir. gotoİnsanların 'goto kullanma ... gitme ...' mantrasını akılsızca tekrarladıklarıyla aynı kategoriye girdi . Gerçek şu ki, sadece araç setinizde bir araç. Herhangi bir araç gibi, yararlı olduğu durumlar ve çok yararlı olmadığı (hatta zararlı) durumlar vardır. Birisi çekiçle bir tahta parçası görmeye çalışırken kötü bir deneyim yaşadı ve daha sonra 'çekiç kullanmayın, çok daha iyi testereler' ilan etti . . Süpürme genellemeleri her zaman yanlıştır
MattDavey

1

Tanımlayıcı uzunluğu önemli değil. Başkaları tarafından söylendiği gibi, üretimde Minification komut dosyası indirme süresini azaltmak için kullanılabilir. Aslında, kabul edilebilir bir kodlama / adlandırma kuralı takip edilmelidir, çünkü özellikle JavaScript ilginç bir dildir ve uzun süredir JavaScript sadece işi yapmak için bir şey olarak ihmal edilmiştir. Adlandırma kuralı için bir yer arıyorsanız, Google JavaScript Stil Kılavuzu iyi bir yerdir. Öneriyor ki,

  • functionNamesLikeThis, örneğin, getCashbackData () {}
  • variableNamesLikeThis, örneğin, var alertInterval = 10;
  • ClassNamesLikeThis, örneğin, var CustomerOrder = {getOrderLines: function () {}}
  • EnumNamesLikeThis, örneğin, var ColorOfChoice = {Beyaz: "#FFFFFF"}
  • methodNamesLikeThis, örneğin, var CustomerOrder = {getOrderLine: function () {}}
  • SYMBOLIC_CONSTANTS_LIKE_THIS, örn. Var EPOCH_UNIX = "01011970"

Bir sürü bağlantı eklemek için başka bir şey var mı? Yani Douglas Crockford'un kim olduğunu bile açıklamıyorsun.
Ramhound

0

"Temiz kod geliştirici" felsefesi tarafından çileden çıkarıldı (ve şimdi yukarıdaki mesajlardan, değişken adlarınızın boyutunu küçültme nedeniyle performans üzerinde sıfır etkisi olacağını bildiğiniz göz önüne alındığında) sadece tavsiye edebilirim:

  1. Aptana, netbeans, eclipse (hepsi ücretsiz) veya çok sayıda ticari üründen herhangi biri gibi iyi bir otomatik tamamlama ve intellisense özelliklerine sahip kişisel gelişim ihtiyaçlarınız için en iyi IDE'yi bulun (eğer bir ücretsiz oyunum olsaydı, JetBrains ürünlerine bakın)
  2. Kodunuzu, herhangi bir yorumu gereksiz yapacak şekilde yazın. Bu, yazmak yerine

    getXy(e) { return [e.pageX, e.pageY ] }

    Bu gerçekten bir şey anlamına gelebilir (özellikle js gibi deli gevşek bir şekilde yazılmış bir dilde); kodun kendisini ifade etmesini sağlarsınız

    getPageCoordinatesFromEvent(event) { 
        return [event.pageX, event.pageY ];
    }

    İyi bir IDE'de, genellikle iki harf uzunluğunda, birkaç harf yazdığınızda ve otomatik tamamlamadan enter tuşuna bastığınızda herhangi bir değişken adı yazmazsınız. Her karakteri kendiniz yazmakta ısrar ederseniz, iyi bir IDE yine de sizi bir yazım hatası olduğunu fark edecektir. Bu sadece çok yüzeysel bir örnektir, bu yüzden (bir eleştiri biçimi olarak değil, dürüst bir tavsiye olarak)

  3. Robert C.Martin'den "Clean Code" ve Hunt / Thomas'ın "Pragmatic Programmer" kitaplarını alın ve kendinize bir daha asla bu tür sorular sormayın - sıkıcı testi otomatikleştirmek için sürekli bir entegrasyon sunucusu üzerinde çalışmakla çok meşgul olacaksınız. -, & geliştirme sürecinin parçalarını (küçültme dahil) inşa edin ve eğlenceli parçalara konsantre olun, harika şeyler yapan anlaşılır bir kod yazın!

Not: Son teknoloji javascript kodunu geliştirerek hız kazanmanız gerekiyorsa, John "Mr. jQuery" Resig'in "Pro Javascript Teknikleri" hakkındaki kitabından hemen sonra veya yukarıdakilere bir göz atın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.