2009-06-15 24 views
7

Bazen veri yapıları, Java'da doğrudan tanımlanamayan belirli bir ilişkiye sahip olmalıdır, ancak kod düzenlendiğinde mümkün olduğunca erken kontrol edilmesi iyi bir durumdur. Klasik örnekler, bir dizinin yeterince büyük olması veya farklı modüllerdeki enumların ilgili üyelere sahip olmasıdır.Java'da derleme zamanında bir şey nasıl iddia edilir?

BOOST, C++ 'da, iddialar başarısız olduğunda bile yarı saydam hatalar sağlayan iyi bir "statik iddia" özelliği sunar; Java'da bir derleme zamanı iddia sistemi nasıl inşa edeceğini bilen var mı?

Düzenleme: Sadece mükemmel bir örnek gördüm: Eclipse this sınıfı aynı uzunlukta olduğu varsayılır iki sabit diziler vardır. Bu benim kodum olsaydı, derleyicinin farklı uzunlukları olup olmadığını söylemesini isterdim.

+3

"Veri yapılarının, Java'da doğrudan tanımlanamayan belirli ilişkilere sahip olması gerektiğine" katılıyorum. Örnekleriniz geçersiz görünüyor. Bir dizinin boyutunun programın geri kalanına olan ilişkisi, dizi büyüklüğünün bir değişkenle tanımlanmasıyla ifade edilebilir. Tek bir pakette Enum'unuz varsa, neden başka birinden referans almıyorsunuz? Aslında, çoklu Enumların karşılık gelen unsurlara sahip olması için herhangi bir sebep düşünemiyorum. Eğer Foo'nun Bar'la aynı özelliklere sahip olması gerekiyorsa neden sadece Foo'yu her yerde kullanmıyorsunuz? Bu bir Enum'un noktası değil mi? –

+0

Bu şekilde iddia edebilmek istediğiniz şey türüne daha spesifik bir örnek verebilir misiniz? Birim testleri, yürütme süresinden daha fazla zamana daha yakın olan bir adım olarak kullanmak için –

cevap

2

Eclipse gibi IDE'lerin bir parçası olarak gelen artımlı derleyiciler, yasal java kodu bulma konusunda uyarı veya hata atmak üzere yapılandırılabilir, ancak çalışma zamanında sorunlara neden olabilir. Bu ayarları istediğiniz kadar yükseltebilirsiniz, ancak invazif ve can sıkıcı olmaya başlayabilir.

7

Orada bir dizi araç size

  • PMD
  • Checkstyle kullanabilirsiniz olan
  • FindBugs
  • doğrula Cakarta yöntemleri Commons-lang (yerine assert bu kullanmak ve bu şekilde saklayın)
  • Cobertura/EMMA (Kod kapsamı için).

bu ve iyi birim testler kombinasyonu düşük asılı meyve (ve aynı zamanda daha yüksek bazı şeyler)

+1

+1. –

İlgili konular