Dolar işareti Blues: Javascript ve PHP


18

Her şeyin güvenli ve güzel olduğu C ++ ve Java programlarını geliştirdim. Derleyiciler, başıboş olup olmadığımı kontrol altında tutmamı sağladı. Tabii ki, herkes üniversitede biraz Perl yaptı, ama ben nefes almadım. Bu günlerde çocuklar arka uçta PHP ve ön tarafta Javascript ile ilgili. Kalça olmaya çalışırken, aynı şeyi yapıyorum (web geliştirme için). Ben içine koşmak sorun yanlışlıkla Javascript normal değişkenlerin önüne bir dolar işareti ($) eklemek ve tabii ki kimse bir şey söylemiyor çünkü bu jQuery nesneleri için genellikle kullanılan yasal sözdizimi.

Bu dolar işareti karışıklığını yakalamak için herhangi bir hata ayıklama aracı veya dev hile var mı? Sık sık aynı hatayı mı yapıyorsunuz ve bununla duygusal olarak nasıl başa çıkıyorsunuz? Chrome geliştirme araçları her zaman bunun bir Javascript hatası olduğunu görmez. PhpStorm ve Emacs'ı geliştirme için kullanıyorum, ancak Emacs'ın şüpheli olmasına rağmen bunlar aptallığımı yakalamıyor, ancak bana bununla ilgili bir şey söylememeyi seçiyor.

Bu sorunun saçma olduğunu düşünüyorsanız haklı olduğunu düşünüyorum. Fakat bir değişkenin önünde dolar işareti olan bir dünyada yaşıyoruz. Böyle bir dünyada hiçbir şey saçma değildir.


2
Duygusal? Sadece meslektaşlarına takıl.
Chris Schiffhauer

@ChrisSchiffhauer Ne yazık ki tam ve mutlak tecritin oyunun adı olduğu akademide çalışıyorum. Uzun süre dayanabilmek için bir meslektaşımla bir toplantı planlamam gerekirdi ve bu her şeyin kendiliğindenliğini ortadan kaldırırdı.
Alan Turing

Yanıtlar:


11

$Değişkenlerde kullanımda yanlış bir şey yoktur . Ben her değişken üzerinde bilerek yapmazdım, ama hala geçerli bir sözdizimi. jQuery, $değişken adı olarak kullanılan örneklerden biridir . Bu nedenle "Chrome geliştirme araçları her zaman bunun bir Javascript hatası olduğunu görmez" , çünkü ilk etapta hata yoktur.

Aşağıdaki gibi kod yazmaktan korkuyorsanız:

var demo = function demo() {
    var a = 123;
    ...
    $a = 456; // A new variable is created in global scope.
}

jsLint , jsHint veya Google Closure Linter gibi bir stil denetleyicisi kullanmanız gerekir . Bunlardan hangisi? Seçim yapmak size kalmış. Bu konuda size yardımcı olması için birkaç not:

stil

Google Closure Linter , akıllıca yapıldığı bilinen Google JavaScript Stil Kılavuzu'nu takip ediyor. JavaScript veya diğer altı dilden herhangi biri için iyi bilinen bir stil kullanmak iyi bir fikirdir: kodunuzu paylaştığınızda veya yeni bir geliştirici kiraladığınızda, bu stile zaten aşina olma ihtimali vardır.

Birçok geliştirici de Douglas Crockford stiline aşinadır. Bu stil JavaScript'te ayrıntılı olarak açıklanmaktadır : JavaScript ile çalışan herkes tarafından satın alınmaya değer bir kitap olan İyi Parçalar .

JsHint'e gelince, hangi sözleşmelerin kullanıldığını gerçekten bulamıyorum ve web sitesinin kendisi bu konu hakkında konuşmaktan kaçınıyor gibi görünüyor. Belki bir şeyi özledim.

IDE'lerin desteği

Hem jsLint hem de jsHint , PhpStorm tarafından desteklenir . Bu da dava Google Kapatma Linter arasında.

çevre

Google Closure Linter, bir dizi araçtan biridir . Zaten Google Closure Derleyici veya Google Closure Kütüphanesi'ni kullanıyorsanız , diğer araçların üstünde Closure Linter'ı tercih etmeniz tercih edilir.

katılık

jsLint'in katı olduğu bilinmektedir. jsHint daha hoşgörülüdür, bu her zaman iyi bir şey değildir. Örneğin, jsHint için jsLint'in çatallanmasının nedenlerinden biri, jsLint'de hata üretecek, ancak jsHint'te hata üretecek kötü kod gösteren bir makalede açıklanmıştır :

/*global jQuery */

// Example taken from jQuery 1.4.2 source
jQuery.extend({
    /* ... */

    isEmptyObject: function( obj ) {
        for ( var name in obj ) {
            return false;
        }
        return true;
    }

    /* ... */
});

Kod kötü, çünkü JavaScript'in blok kapsamı yok gibi görünüyor, ancak değil. Bkz. JavaScript: İyi Parçalar, s. 102, Ek A: Korkunç Parçalar, Kapsam. Başka bir deyişle, dili bilmeden koda baktığımızda, namegörünür kalırken döngü dışında görünmemesini bekliyoruz.

Google Closure Linter'a gelince, jsLint ve jsHint arasında ortada bir yerde olduğuna inanıyorum, ancak bunu destekleyecek yeterli bilgim yok.

Sonuç

Ben jsHint önlemek: çok izin verici, yani diğer linters tespit potansiyel hataları bulamazsınız. Kullanılan stil rehberini bulmak zordur.

JsLint ve Google Closure Linter arasında seçim belli değil. Her ikisi de uzmanlar tarafından yazılmıştır, her ikisi de binlerce geliştirici tarafından takip edilen sıkı, iyi tanımlanmış stil kılavuzunu takip eder. Her ikisini de bir süre kullanın, sonra sizin için daha pratik olanı seçin.


+1: Beni döv. Dilleri F # 'dan C #' a değiştirdiğimde noktalı virgülleri düşürmeye başladım, bu yüzden acını paylaşabilir miyim;)
scrwtp

2
Sadece bir not, OP PhpStorm kullandığından: Hem JSLint hem de JSHint entegre edilmiştir ve kodlarını istek üzerine ve hatta anında inceleyecek şekilde ayarlanabilir. Örneğinizdeki gibi hataların yakalanması oldukça kolaydır.
yannis
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.