Java programcıları neden değişken "clazz" olarak adlandırmayı sever? [kapalı]


156

Kodların çok fazla beyanı gördüm Class clazz, bu nereden geliyor? Bu bir tür konvansiyon mu? Bence 'clazz' İngilizce bir kelime bile değil, hiçbir anlamı yok, bu kadar çok programcı nasıl tesadüfen yanlış bir isim söyleyebilir?


36
klass'ı unutma!
Peter Recore

24
@Peter: iyi bir nokta, bu bir klasik.
Başkan James K. Polk

13
Aleksey Shipilev alternatif olarak bir сlassKiril alfabesi ile yazılmasını önerdi с.
Stuart

12
@StuartMarks Bu teklifi reddediyorum. Rica ederim.
Goran Vasic

16
İngiltere'de normalde 'clarse' kullanırız.
John Gowers

Yanıtlar:


173

clazzJava'da JDK 1.0'dan beri ayrılmış "sınıf" sözcüğü yerine kullanılmıştır. "class" istediğiniz şeydir, ancak önemsiz kısaltmak veya eklemek ("a", "the", "_" vb.) netliği azaltır. clazzsadece ders diyor. "Uluslararası" İngilizce konuşanlar (hem İngiliz hem de Amerikan İngilizcesi okuyanlar) 's' ve 'z' yi aktarmada kullanılır.

Java, en başından beri kaynağı ve uygun bir kültürü açıkladığından, değerli Java kodu ve öğreticiler aynı kuralları alırlar. Bu, Java ekosistemiyle ilgili, başarısının önemli bir parçası olduğunu düşündüğüm harika şeylerden biri.


82
"Clazz" ifadesinin "_class" veya "myClass" dan daha açık olduğunu kabul etmek zor. Kodda "_class" görürsem, niyet beni Google'a (ve bu sayfaya) gönderen bir kelimeden daha açık olurdu.
uscjeremy

@uscjeremy: Şahsen, alt çizgi kullanımını yalnızca duruma göre farklılık gösteren tanımlayıcılara tercih ederim. Bir dil tasarladıklarını, ben harf duyarlı olan ve olmayan küçük harfe duyarlı kuralların bir melez olmak olurdu: Herhangi bir tanımlayıcı yalnızca olabilir kullanılan tam olarak orijinal muhafaza içinde, ancak herhangi bir tanımlayıcı bildirimi önceden varolan tanımlayıcı gizlemek hangi sadece kasada farklıydı. Having Foosınıf kapsamda ve tanımlanmış fooyerel değişken kapsamda yasal olmalı, ancak yerel kapsamında sınıf kapsamlı değişkene yapılan bütün atıflar talep etmelidir this.Foo. Böyle bir kural ...
Supercat

@uscjeremy: ... bence büyük / küçük harf duyarlı ve büyük / küçük harf duyarlı olmayan dillerin avantajlarını birleştiriyor. Büyük / küçük harfe duyarlı olmayan diller, "foo" tanımlayıcı adının fonetik okumalarının "büyük harf foo" veya "küçük harf foo" demeye gerek kalmadan açık olması avantajına sahiptir, ancak someThingbazı yerlerde bir tanımlayıcının yazılmasına izin vermek için gerçek bir neden yoktur ve sOmEtHiNgdiğerlerinde.
SuperCat

1
@supercat Unicode Genel Noktalama İşaretleri, balık tuttuğum şeydi. unicode.org/faq/punctuation_symbols.html / C # tasarlamam. Java'da, herhangi bir sorun, büyük harf veya saçma kelimeler olmadan çağrılan bir yöntem fnordve çağrılan bir alandan uzaklaşırsınız fnord. Bunun karşı bir örnek olarak yeterli olacağını düşünüyorum.
Tom Hawtin - taktik

3
@uscjeremy "clazz" ifadesinin "_class" veya "myClass" dan daha açık olduğunu kabul etmek zor - Doğru. Bununla birlikte, "_class" kullanmak bir seçenek olmaz, çünkü Java adlandırma kurallarıyla açıkça çakışır .
MC İmparatoru

73

Çünkü kullanmak istedikleri kelimeyi kullanamıyorlar class. Saklıdır.


2
Evet, biliyorum, ama bence bir değişken hakkı büyü daha anlamlı olurdu.
Sawyer

22
@Tony - nasıl bilirsiniz ve değişken isminin aynı yorumda yazılmasını nasıl talep edebilirsiniz? Bunlar birbirini dışlar.
duffymo

3
@Tony, değişken bir "sınıf" adını veremezsiniz, bu ayrılmış bir sözcüktür.
Steve Kuo

6
@duffymo: Komik. Sınıfın ayrılmış kelime olduğunu biliyorum ve gerçekten değişken adın doğru yazılmasını talep ediyorum, neden karşılıklı olarak özeller? buna 'sınıf' demek zorunda mısın?
Sawyer

13
Sanırım Tony değişkenin sadece "sınıf" dan daha açıklayıcı bir şey olmasını istiyor. Örneğin, "x" ifadesinin düzgün yazıldığı söylenebilir, ancak bu "numberOfComments" kadar anlamına gelmez
Peter Recore

17

Çünkü 'sınıf' ayrılmış bir anahtar kelime olduğundan Class class, buna izin verilmiyor. Bu nedenle göreceksiniz Class clazzveyaClass cls .


7
Bir sınıfı adlandırmak için bir sebep düşünemiyorum, Classçünkü herhangi bir projede o kadar çok sınıf var ki bir sınıfı çağırmak sınıfı anlamsız görünüyor. Ayrıca bir DEĞİŞKEN aramak için bir neden düşünemiyorum class...
Blindy

8
Bir Sınıf Sınıfı adı vermediniz, Java API'sı.
Sawyer

3
@Blindy: Ya java.lang.Class? Orada fazla seçeneğiniz yok.
Dan Dyer

14
@Blindy: Zaten bir nesnenin sınıfını ifade eden Class adında bir sınıf var. 'Class' adlı bir değişkene sahip olmanın mükemmel nedeni, bir nesnenin sınıfıyla çalışırken (yani: bir nesnenin ne tür olduğunu bulmak)
Rahip Gonzo

3
Ben bilgilendirici dikkate alacağını ClassInformation, ya da ClassMetadataya da benzer bir şey. Her sınıf bir sınıftır, ancak hepsini Classadlandırmazsınız, ana işlevleriyle adlandırırsınız.
Mart'ta Blindy

7

Gerçek derleyiciye ve bir tokenin bağlamında ne anlama geldiğini ayırt etme yeteneğine gelir. Bununla birlikte, bu özel durumda, derleyicinin jetonun farklı bir bağlamda ne anlama geldiğini ayırt edememesidirclass . classBağlamına bakılmaksızın, bir sınıfın beyanını belirtmek için kullanılması zor ve hızlı bir kuraldır ve bu nedenle ayrılmış bir kelimedir. Bu, elde ettiği kadar basit ve düşük seviyelidir.

Zorunlu hissediyorsanız, classdeğişken adı olarak kullanmanıza izin verecek bağlamsal bir kural eklemek için kendi Java derleyicinizi yazabilirsiniz . Ben sadece kullanmak için zaman çok daha iyi olacağını düşünüyorum rağmen - clazzya klassda muhtemelen sağlığınız için iyi olurdu.


3
İle ilgili bir kelime yetersizlik : Java edildi tasarlanmış bir şekilde ayrılan-kelimeler dile. Ayrılmamış sözcükler , (un) okunabilirliğine rağmen, if (varsa) ve sonra başka gibi ifadeleri başarılı bir şekilde derleyebilir ve vurgulayabilir . Böylece derleyici bilerek başarısız oldu
usr-local-ΕΨΗΕΛΩΝ

4

bu nereden geliyor?

İlk olarak Josh Bloch'un şaşkınlıklarında gördüm. Ama eminim daha önce diğer geliştiriciler tarafından kullanılmış. Josh Bloch daha meşhur oldu.


4

Java, bir anahtar kelimeyi @önekiyle C # 'dan farklı olarak tanımlayıcı olarak kullanmanıza izin veren bir özelliğe sahip değildir (örn @class. Geçerli bir tanımlayıcıdır.)


2
Bu farklı bir tanımlayıcı. classve $classher ikisi de JVM'de geçerli (ancak farklı) tanımlayıcılardır. "class"VM'de çevrilen bir Java kaynak dosyasına yazabileceğiniz hiçbir tanımlayıcı yoktur .
finnw

2

İnsanların bir Sınıf olduğunu anlamalarını sağlamak için, Anahtar Kelime Sınıfı Anahtar Kelime ile değiştirilen (Eşdeğer) bir İngilizce kelimedir. ve neredeyse Kuralların okunabilirliğini artırmaktır

Büyük Mantık buna dahil değil


2

Beyanname Class clazzJava dünyasında popülerdir, ancak yeni gelenler ve yazım denetleyicileri için garip olabilir. Bazı insanların en az şaşkınlık ilkesine göre kaçınılması gerektiğini söylediğini duydum .

Bir Classnesnenin bir türü temsil ettiğini söylemek mümkün olduğundan , ben şahsen böyle değişkenleri bildirmeyi tercih ederim Class type.


0

Sınıf bir tür üstbilgi olduğu için clazz kullanıyoruz. Örneğin, burada sınıf kullanın:

public class HelloWorld {

ve burada:

Object.class.getName();

Maalesef clazz gibi alternatif isimler kullanmalıyız.


-2

Basitçe söylemek gerekirse, olmayan bir classsınıfa sahiptir clazz.

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.