Java Yorumlarında / ** ve / *


192

Arasındaki fark nedir

/**
 * comment
 *
 *
 */

ve

/*
 * 
 * comment
 *
 */

Java? Ne zaman kullanmalıyım?

Yanıtlar:


243

İlk forma Javadoc denir . Kodunuz için javadocaraç tarafından oluşturulan resmi API'ları yazarken bunu kullanırsınız . Örnek olarak, Java 7 API sayfası Javadoc kullanır ve bu araç tarafından oluşturulur.

Javadoc'ta göreceğiniz bazı ortak öğeler şunlardır:

  • @param: bu, bir yönteme hangi parametrelerin iletildiğini ve hangi değere sahip olmaları gerektiğini belirtmek için kullanılır

  • @return: bu, yöntemin hangi sonucu vereceğini belirtmek için kullanılır

  • @throws: Bu, belirli bir giriş durumunda bir yöntemin istisna veya hata verdiğini belirtmek için kullanılır

  • @since: Bu, bu sınıfın veya işlevin kullanılabildiği en eski Java sürümünü belirtmek için kullanılır

Örnek olarak, şu compareyöntem için Javadoc Integer:

/**
 * Compares two {@code int} values numerically.
 * The value returned is identical to what would be returned by:
 * <pre>
 *    Integer.valueOf(x).compareTo(Integer.valueOf(y))
 * </pre>
 *
 * @param  x the first {@code int} to compare
 * @param  y the second {@code int} to compare
 * @return the value {@code 0} if {@code x == y};
 *         a value less than {@code 0} if {@code x < y}; and
 *         a value greater than {@code 0} if {@code x > y}
 * @since 1.7
 */
public static int compare(int x, int y) {
    return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

İkinci form bir blok (çok satırlı) yorumdur. Bir yorumda birden çok satır olmasını istiyorsanız bunu kullanırsınız.

İkinci formu sadece idareli kullanmak isteyeceğinizi söyleyeceğim ; başka bir deyişle, yöntemin / karmaşık işlevin sahip olması gereken davranışları açıklamayan blok yorumlarıyla kodunuzu fazla yüklemek istemezsiniz.

Javadoc ikisi arasında daha açıklayıcı olduğundan ve bunu kullanmanız sonucunda gerçek belgeler oluşturabildiğiniz için Javadoc'u kullanmak basit blok yorumlarına daha çok tercih edilir.


35
Basit blok yorumları yerine Javadoc kullanmanın bir başka güzel yararı, bir Java öğesinin önüne bir Javadoc yorumu (yani bir yöntem imzası, bir alan bildirimi, bir sınıf vb.) - imleci hareket ettirdiğinizde yorumunuzu göstermek için (araç ipucunda f.ex) - veya fareyle fareyle üzerine gelindiğinde - bu Java öğesine yapılan bir başvuruda.
SantiBailors

Değişkenler için java doc yorumlarını kullanmak uygun mudur?
the_prole

@the_prole: Yapabilirsiniz, ancak bir Constants tür paketinin parçası olmadığı sürece içinde çok değer görmüyorum. O zaman bile, hat içi yorumlar benim deneyimimde daha değerli oldu.
Makoto

136

Java için programlama dili vardır fark ikisi arasında. Java'nın iki tür yorumu vardır: geleneksel yorumlar ( /* ... */) ve satır sonu yorumları ( // ...). Java Dil Belirtimi'ne bakın . Yani, Java programlama dili için, hem /* ... */ve /** ... */yani geleneksel yorumların örnekleri olan ve ikisi de Java derleyici tarafından aynen kabul edilir, bunlar göz ardı edilir (: onlar beyaz boşluk olarak kabul edilir ya da daha doğru bir).

Ancak, bir Java programcısı olarak yalnızca bir Java derleyicisi kullanmazsınız. Derleyici, IDE, derleme sistemi vb. İçeren tüm bir araç zincirini kullanırsınız. Bu araçların bazıları işleri Java derleyicisinden farklı şekilde yorumlar. Özellikle /** ... */yorumlar, Java platformuna dahil edilen ve dokümantasyon oluşturan Javadoc aracı tarafından yorumlanır . Javadoc aracı Java kaynak dosyasını tarar ve aralarındaki /** ... */belgeleri belge olarak yorumlar.

Bu, FIXMEve gibi etiketlere benzer TODO: // TODO: fix thisveya gibi bir yorum eklerseniz // FIXME: do that, çoğu IDE bu yorumları vurgular, böylece bunları unutmazsınız. Ama Java için bunlar sadece yorumlar.


48
Javadoc sözdiziminin dilin bir parçası olmadığı ve şu anda başka bir cevabın yakalanmadığı önemli bir ayrım yapmak için +1.
Chris Hayes

1
Bu nedenle Maven'de iyi derlenen bir projeniz olabilir, ancak JavaDoc'ları eklemeye karar verir vermez şikayet etmeye başlar çünkü javadocaraç bir şeyi yorumlayamaz.
Kaptan Adam

19

Birincisi Javadoc yorumları. javadocSınıflarınız için API belgelerini oluşturmak üzere araç tarafından işlenebilirler . İkincisi normal bir blok yorumudur.


14

JLS'nin 3.7 bölümünü okumak, Java'daki yorumlar hakkında bilmeniz gereken her şeyi açıklar.

İki tür yorum vardır:

  • /* Metin */

Geleneksel bir yorum: ASCII karakterlerinden / * 'dan ASCII karakterlerine * / tüm metinler yok sayılır (C ve C ++' da olduğu gibi).

  • //Metin

Satır sonu yorumu: ASCII karakterlerinden // satır sonuna kadar olan tüm metinler yoksayılır (C ++ 'da olduğu gibi).


Sorunuz hakkında,

İlki

/**
 *
 */

Javadoc Teknolojisini ilan etmek için kullanılır .

Javadoc, bir dizi kaynak dosyada bildirimleri ve belge yorumlarını ayrıştıran ve sınıfları, arabirimleri, yapıcıları, yöntemleri ve alanları tanımlayan bir dizi HTML sayfası üreten bir araçtır. Javadoc çıktısını özelleştirmek için bir Javadoc dokümanı kullanabilirsiniz. Doclet, Doclet API ile yazılmış ve araç tarafından oluşturulacak çıktının içeriğini ve biçimini belirten bir programdır. HTML, SGML, XML, RTF ve MIF gibi her türlü metin dosyası çıktısı oluşturmak için bir doküman yazabilirsiniz. Oracle, HTML biçimli API belgeleri oluşturmak için standart bir belge sunar. Kitapçıklar ayrıca API belgeleri üretmeyle ilgili olmayan özel görevleri gerçekleştirmek için de kullanılabilir.

Hakkında daha fazla bilgi Docletiçin API'ya bakın .

İkincisi, JLS'de açıkça açıklandığı gibi, arasındaki tüm metni göz ardı eder /*ve */bu nedenle çok satırlı yorumlar oluşturmak için kullanılır.


Java'daki yorumlar hakkında bilmek isteyebileceğiniz diğer bazı şeyler

  • Yorumlar yuvalanmaz.
  • /* and */ile başlayan yorumlarda özel bir anlamı yoktur //.
  • //ile başlayan yorumlarda özel bir anlamı yoktur /* or /**.
  • Sözcük dilbilgisi comments karakter değişmezleri (içinde meydana olmadığını ima §3.10.4 ) ya da dize hazır ( §3.10.5 ).

Bu nedenle, aşağıdaki metin tek bir tam yorumdur:

/* this comment /* // /** ends here: */

8

Mevcut cevapların sorunun bu kısmını yeterince ele aldığını düşünmüyorum:

Ne zaman kullanmalıyım?

Kuruluşunuzda yayınlanacak veya yeniden kullanılacak bir API yazıyorsanız, publicsınıf dışı protectedyöntemlerin ve alanların yanı sıra her sınıf, yöntem ve alan için kapsamlı Javadoc yorumları yazmalısınız final. Javadoc herşeyi karşılar olamaz vb ön koşullardan, Hedefşartlar, geçerli argümanlar, çalışma zamanı istisnaları, iç çağrılarını yöntem imzası ile aktarılacak,

Dahili bir API (aynı programın farklı bölümleri tarafından kullanılan) yazıyorsanız, Javadoc tartışmasız daha az önemlidir. Ancak bakım programcılarının yararı için, doğru kullanım veya anlamın hemen belirgin olmadığı herhangi bir yöntem veya alan için Javadoc yazmalısınız.

Javadoc'un "katil özelliği" Eclipse ve diğer IDE'lerle yakından entegre olmasıdır. Bir geliştiricinin fare işaretçisini bir tanımlayıcı üzerine getirmesi yeterlidir. Belgelere sürekli atıfta bulunmak, deneyimli Java geliştiricileri için kendi kodlarının kalitesini artıran ikinci doğa haline gelir. API'niz Javadoc ile belgelenmemişse, deneyimli geliştiriciler onu kullanmak istemeyecektir.


4

Aşağıdaki Java Kodu listesindeki yorumlar gri renkte olan karakterlerdir:

/** 
 * The HelloWorldApp class implements an application that
 * simply displays "Hello World!" to the standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); //Display the string.
    }
}

Java dili üç tür yorumu destekler:

/* text */

Derleyici, /*ile arasındaki her şeyi yok sayar */.

/** documentation */

Bu bir doküman yorumunu gösterir (kısaca doküman yorumu). Derleyici, bu tür yorumları yok sayar /*ve tıpkı ve gibi yorumları yok sayar */. JDK javadoc aracı, otomatik olarak oluşturulan belgeleri hazırlarken doktor yorumlarını kullanır.

// text

Derleyici //satırın sonuna kadar her şeyi yok sayar .

Şimdi ne zaman kullanmanız gerektiğiyle ilgili:

// textTek bir kod satırına yorum yapmak istediğinizde kullanın .

/* text */Birden fazla kod satırına yorum yapmak istediğinizde kullanın .

/** documentation */ Program hakkında otomatik belge oluşturma için kullanılabilecek bazı bilgiler eklemek istediğinizde kullanın .


3

Birincisi, sınıfların, arayüzlerin, yöntemlerin vb. Üstünde tanımladığınız Javadoc içindir. Kodunuzu, sınıfın ne yaptığı veya hangi yöntemin vb.

İkincisi kod bloğu yorumu. Diyelim ki derleyicinin yorumlamasını istemediğiniz kod bloğunuz var ve kod bloğu yorumunu kullanıyorsunuz.

diğeri // ilerleyen kod satırlarının ne yapması gerektiğini belirtmek için ifade düzeyinde kullandığınız budur.

// TODO gibi başka şeyler de var, bu daha sonra o yerde bir şeyler yapmak istediğinizi işaret edecek

// FIXME, geçici bir çözümünüz olduğunda kullanabilirsiniz, ancak daha sonra ziyaret etmek ve daha iyi hale getirmek istediğinizde.

Bu yardımcı olur umarım


0
  • Tek yorum örn .: // yorum
  • Çok Satırlı yorum örn.: / * Yorum * /
  • javadoc yorumu ör .: / ** yorum * /

4
Bu, mevcut cevapların üzerine hiçbir şey eklemez.
shmosel

1
@ shmosel no, onları tho özetler.
Det

-2

Java iki tür yorumu destekler:

  • /* multiline comment */: Derleyici, /*ile arasındaki her şeyi yok sayar */. Yorum birden fazla satıra yayılabilir.

  • // single line: Derleyici //satırın sonuna kadar her şeyi yok sayar .

Javadoc gibi bazı araçlar , amaçları için özel bir çok satırlı yorum kullanır. Örneğin /** doc comment */, otomatik olarak oluşturulan belgeleri hazırlarken javadoc tarafından kullanılan bir belge açıklamasıdır, ancak Java için bu çok satırlı basit bir yorumdur.


12
Java dili yalnızca iki tür yorumu destekler. Şeklinde bir yorum /** .. */sadece düzenli çok satırlı bir yorumdur ve içindeki ilk karakter bir yıldız işareti olur.
Chris Hayes
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.