Bu snippet'leri çok fazla kullandım, null
değerler ve boş dizeler arıyorum .
Alınan argümanları kontrol etmek için yöntemlerimdeki ilk kod olarak "argüman test" -templates kullanıyorum.
testNullArgument
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
İstisna mesajını şirketinizin veya projenizin standardına uyacak şekilde değiştirmek isteyebilirsiniz. Ancak, rahatsız edici argümanın adını içeren bir mesaj almanızı öneririm. Aksi takdirde, yönteminizin arayanı neyin yanlış gittiğini anlamak için koda bakmalıdır. ( NullPointerException
İletisi olmayan A , oldukça saçma "null" iletisiyle bir istisna oluşturur).
testNullOrEmptyStringArgument
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
${varName} = ${varName}.trim();
if (${varName}.isEmpty()) {
throw new IllegalArgumentException(
"Illegal argument. The argument cannot be an empty string: ${varName}");
}
Ayrıca boş denetim şablonunu yukarıdan tekrar kullanabilir ve bu parçacığı yalnızca boş dizeleri denetlemek için uygulayabilirsiniz. Daha sonra yukarıdaki kodu üretmek için bu iki şablonu kullanırsınız.
Bununla birlikte, yukarıdaki şablonda, argümanda son ise, üretilen kodu bazılarını değiştirmeniz ${varName} = ${varName}.trim()
gerekecektir (başarısız olacaktır).
Çok sayıda son argüman kullanıyorsanız ve boş dizeleri kontrol etmek istiyorsanız, ancak bunları kodunuzun bir parçası olarak kırpmanız gerekmiyorsa, bununla devam edebilirsiniz:
if (${varName} == null) {
throw new NullPointerException(
"Illegal argument. The argument cannot be null: ${varName}");
}
if (${varName}.trim().isEmpty()) {
throw new IllegalArgumentException(
"Illegal argument. The argument cannot be an empty string: ${varName}");
}
testNullFieldState
Ayrıca, bağımsız değişken olarak gönderilmeyen değişkenleri kontrol etmek için bazı snippet'ler oluşturdum (büyük fark, istisna tipidir, şimdi IllegalStateException
bunun yerine).
if (${varName} == null) {
throw new IllegalStateException(
"Illegal state. The variable or class field cannot be null: ${varName}");
}
testNullOrEmptyStringFieldState
if (${varName} == null) {
throw new IllegalStateException(
"Illegal state. The variable or class field cannot be null: ${varName}");
}
${varName} = ${varName}.trim();
if (${varName}.isEmpty()) {
throw new IllegalStateException(
"Illegal state. The variable or class field " +
"cannot be an empty string: ${varName}");
}
testArgument
Bu, bir değişkeni test etmek için genel bir şablondur. Bunu takdir etmeyi öğrenmek birkaç yılımı aldı, şimdi çok kullanıyorum (elbette yukarıdaki şablonlarla birlikte!)
if (!(${varName} ${testExpression})) {
throw new IllegalArgumentException(
"Illegal argument. The argument ${varName} (" + ${varName} + ") " +
"did not pass the test: ${varName} ${testExpression}");
}
Bir değişken adı veya değer döndüren bir koşulu, ardından bir işlenen ("==", "<", ">" vb.) Ve başka bir değer veya değişken girersiniz ve sınama başarısız olursa, sonuçta ortaya çıkan kod bir IllegalArgumentException oluşturur.
Tüm ifadenin bir "! ()" İçine sarılmasıyla biraz karmaşık if yantümcesinin nedeni, istisna mesajındaki test koşulunun yeniden kullanılmasını mümkün kılmaktır.
Belki de bir meslektaşı karıştıracaktır, ancak sadece bu tür istisnaları atarsanız koda bakmayacakları koda bakmaları gerekiyorsa ...
İşte dizilerle ilgili bir örnek:
public void copy(String[] from, String[] to) {
if (!(from.length == to.length)) {
throw new IllegalArgumentException(
"Illegal argument. The argument from.length (" +
from.length + ") " +
"did not pass the test: from.length == to.length");
}
}
Bu sonucu, "from.length" [TAB] "== to.length" yazarak şablonu çağırarak elde edersiniz.
Sonuç, "ArrayIndexOutOfBoundsException" veya benzerlerinden çok daha komiktir ve kullanıcılarınıza sorunu çözme şansı verebilir.
Zevk almak!