@See ve @inheritDoc arasındaki farkın ayrıntıları


90

JavaDoc referansına baktım ve @see(çeşitli bağlantılar) ve {@inheritDoc}(süper sınıf JavaDoc yorumunun dışa aktarımı ) arasındaki temel farkı anlarken, şeylerin gerçekte nasıl uygulandığına dair açıklamaya ihtiyacım var.

Eclipse IDE'de, miras alınan yöntem için (arabirimden veya toString () geçersiz kılma vb.) İçin "Öğe Yorumları Oluştur" u seçtiğimde, aşağıdaki yorumu oluşturuyor

/* (non-Javadoc)
 * @see SomeClass#someMethod()
 */

Ben üretim JavaDoc'u için gerekli ediyorum ben yerine, öyle bırakabilir gerektiğini @seeile {@inheritDoc}, veya bunu çevirmek iyi niyetli gibi JavaDoc'u:

/**
 * {@inheritDoc}
 */

Ve bunu yaptığımda sınıf # yöntem bayrağını tutmalı mıyım?

Yanıtlar:


144

Her şeyden önce, orijinal tutulma şablonunu kaldırmalısınız çünkü bu sadece gürültülü bir gereksizdir. Ya anlamlı dokümanlar koyun ya da hiçbir şey koymayın. Ancak, IDE şablonlarını kullanarak bariz olanın gereksiz şekilde yeniden ifade edilmesi sadece kodu karıştırır.

Eğer üretim javadoc gerekmektedir, ikinci olarak, o zaman var olan açıklama başlangıç yapmak /**. Aksi takdirde, javadoc değildir.

Son olarak, geçersiz kılıyorsanız, kullanmalısınız @inheritDoc( @seh bir yorumda belirtildiği gibi, orijinal dokümanları eklemek istediğinizi varsayarak , sadece orijinal dokümanları kopyalamak istiyorsanız, o zaman hiçbir şeye ihtiyacınız yoktur). @seegerçekten yalnızca diğer ilgili yöntemlere başvurmak için kullanılmalıdır .


75
Yalnızca orijinal üst sınıf belgelerine eklemek@inheritDoc istiyorsanız kullanmalısınız . Yalnızca kopyalanmasını istiyorsanız, Javadoc bunu zaten yapacak ve üst sınıf belgelerinin alt sınıfın geçersiz kılınan yöntemi için geçerli olduğunu, çünkü alt sınıfın ek belge sağlamadığını belirtiyor.
seh

4
Dokümanları içeren ve içermeyen oluşturdum @inheritDocve herhangi bir fark görmüyorum. Bu olmadan bile @inheritDoc, türetilmiş sınıfın Javadoc'unun temel sınıfa eklendiğini görüyorum.
randominstanceOfLivingThing

Buraya geldim çünkü checkstyle "yöntem uzatma için tasarlanmadı" diye şikayet ediyor. İyi bir fikir, @inheritDocbazı uygulamaya özgü belgeleri kullanmak ve sonra eklemek olabilir , örneğin, ana yöntemi nasıl uyguladığı / üzerine yazdığı ve özellikle de bunu NEDEN yaptığı gibi yapıyor.
Ben
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.