SORU
15 Aralık 2010, ÇARŞAMBA


Neden Java kaynak kodunu unicode karakterleri kaçtı izin vermez?

Ben Unicode Unicode karakterleri olarak Java kaynak kod içinde sadece izin verilen recently learned (örn. double π = Math.PI; ) aynı zamanda olarak kaçtı dizileri (örn. * *4 ).

İlk varyant bana mantıklı programcılar değişkenleri ve yöntemleri adına seçtikleri uluslararası bir dil sağlar. Ancak, ikinci yaklaşımın pratik bir uygulama göremiyorum.

Burada kullanımını göstermek için kod bazı parçaları, Java SE 6 ve Eclipse 6.9.1 ile test:

Bu kodu 3.141592653589793 yazdırır

public static void main(String[] args) {
    double π = Math.PI;
    System.out.println(\u03C0);
}

Açıklama: \u03C0 aynı Unicode karakter π

Bu kod görecektir

public static void main(String[] args) {
    double π = Math.PI; /\u002A
    System.out.println(π);

    /* a comment */
}

Açıklama: aslında yukarıdaki kodlar: kod

public static void main(String[] args) {
    double π = Math.PI; /*
    System.out.println(π);

    /* a comment */
}

Aktar satement yorum.

Benim örnek sadece, bu dil özelliği ile olası sorunları bir dizi fark ettim.

İlk olarak, kötü bir programcı gizlice kod bitleri açıklama için kullanın, ya da aynı değişken tanımlama birden fazla yol açabilir. Belki de düşünmedim yapılabilecek diğer korkunç şeyler var.

İkinci olarak, IDE arasında destek eksikliği var gibi görünüyor. Ne Sen, ne de Tutulması doğru kod örnekleri için vurgulama sağladı. Aslında, Sen, bile, bir sözdizimi hatası derleme bir sorun olmamasına rağmen () işaretlenmiş.

Son olarak, bu özellik kötü belgelenmiş ve yaygın olarak kabul görmüş değil. Neden bir programcı diğer programcılar tanımak ve anlamak mümkün olmayacağını onun kodunda bir şey kullanmak istiyorsunuz? Hatta Hidden Java Features question bu konuda bir şey bulamadım.

Benim sorum şu:

Neden Java kaçtı Unicode dizileri sözdizimi içinde kullanılmak üzere izin veriyor mu? Ne bazıları "lehte" bölümü Java, birçok rağmen onun kalmasını sağladı, bu özelliğin "eksileri"?

CEVAP
15 Aralık 2010, ÇARŞAMBA


Unicode kaçış sıraları ve saf ASCII kaynak kodu saklamak iletmek ve hala Unicode karakterleri tüm aralığı kullanmak için izin verir. Bu iki avantajı vardır:

  • ASCII olmayan karakterler araçları tarafından kırılmasından o başa çıkamaz riski yok. Öğrenme Java dizayn edildiği 1990'ların başında gerçek bir endişe vardı. ASCII olmayan karakterler içeren bir e-posta gönderme ve unmangled gelecek olan norm istisna değil.

  • Hiçbir kaynak kodu yorumlamak için kullanılacak olan derleyici ve editor/IDE söylemek lazım. Bu hala çok geçerli bir husustur. Tabii ki, çok daha iyi bir çözüm, bir dosya Başlığı (XML) meta veri olarak kodlama için olurdu, ama bu henüz o zamanlar en iyi yöntem olarak ortaya çıkmış değildi.

Bana mantıklı ilk varyant - programcılar adı sağlar bir değişkenleri ve yöntemleri onların uluslararası dil seçim. Ancak, ben göremiyorum. ikinci pratik uygulama yaklaşım.

Her ikisi de tam olarak aynı bayt kodu neden ve dilin bir özelliği olarak aynı güce sahip olacak. Tek fark kaynak kodu.

İlk olarak, kötü bir programcı kullanabilirsiniz gizlice dışarı kod bitleri yorum için ya da tanıtıcı birden çok yolu oluşturmak aynı değişken.

Bir programcı hakkında endişeleriniz varsakastenkodunuzu sabote okunabilirlik, bu dil özelliği sorunlarının en küçüğü.

İkinci olarak, IDE arasında destek eksikliği var gibi görünüyor.

Pek özelliği veya geliştiricilerinin hatası. Ama sonra, hiç kullanılma niyetinde olduğunu sanmıyorum"". el İdeal olarak, IDE karakterleri normal olarak girin ve normal olarak gösterdiler, ama otomatik olarak unicode kaçış dizilerini olarak onları kurtarmak için bir seçenek olurdu. Hatta zaten IDEs bu şekilde davranmasına yapar eklentiler veya yapılandırma seçenekleri olabilir.

Ama genel olarak, bu özellik çok nadiren kullanılan ve kötü desteklenen muhtemelen bu nedenle gibi görünüyor. Ama nasıl Java 1993 etrafında dizayn eden kişi bilebilir?

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CaptainDisillusion

    CaptainDisil

    18 EYLÜL 2007
  • IGN

    IGN

    19 EYLÜL 2006
  • MatheusDosGames

    MatheusDosGa

    28 Aralık 2011