Kontrol basamağı olmayan numaralar, doğrulama araçlarının en çok yanlış anlatıldığı alandır; çünkü bu numaralarda yapılabilecek denetim, diğerlerine göre belirgin biçimde daha azdır. Bu yazıda böyle bir numaranın nasıl tanınacağını, hangi sonucun dürüst olduğunu ve eksik kuralın neden kullanıcı hatası sayılmaması gerektiğini bulacaksınız.
Kontrol basamağı olmayan bir numara nasıl tanınır?
Bu tür bir numarayı tanımanın yolu, numaranın kendisine bakmak değil, o numaralandırma düzeni hakkında neyin yayımlanmış olduğuna bakmaktır. Bir düzen, numaranın kaç karakterden oluştuğunu ve hangi karakterleri içerebileceğini duyurmuş ama son karakterin diğerlerinden hesaplandığına dair bir kural yayımlamamışsa, o düzende kontrol basamağı yoktur.
Bu ayrım dışarıdan bakınca görünmez. Kontrol basamağı olan bir numara ile olmayan bir numara, ekranda aynı biçimde görünebilir: aynı uzunlukta, aynı karakter kümesinde, sıradan bir dizi. Fark, dizinin kendi içinde değil, düzenin tanımındadır.
Bu yüzden tanıma işi veriye dayanır. Bir düzenin hangi katmanlarının doğrulanabildiği, o düzen için tutulan kural kaydında yazılı olmalıdır. Bu kayıt yoksa, denetim bilmediği bir alanda tahmin yürütmeye başlar ve bu tahmin genellikle numarayı haksız yere reddetmekle sonuçlanır.
Numaranın hangi katmanlardan oluştuğu ve bu katmanların nasıl ayrıldığı numara doğrulama nasıl çalışır yazısında anlatılmıştır.
Bir düzende neden hiç kontrol basamağı bulunmaz?
Bunun birkaç nedeni olabilir ve hiçbiri düzenin kötü tasarlandığı anlamına gelmez. İlk neden, numaranın doğduğu dönemdir. Bazı numaralandırma düzenleri, kontrol basamağı fikri yaygınlaşmadan önce kurulmuştur. Bu düzenler bugün hâlâ kullanıldığı için numaraların yapısını değiştirmek, var olan bütün kayıtları geçersiz kılmak demektir.
İkinci neden, numaranın kullanım amacıdır. Kontrol basamağı, elle yazma ve okuma hatalarını yakalamak için değerlidir. Bir numara yalnızca makineler arasında ve zaten doğrulanmış bir kanaldan geçiyorsa, bu gereksinim daha zayıf görünebilir.
Üçüncü neden, üretim maliyetidir. Kontrol basamağı eklemek, numaranın üretildiği her yerde hesabın doğru yapılmasını gerektirir. Numaraları üreten taraf bu hesabı uygulamıyorsa, dışarıdan bakan bir doğrulayıcı için kontrol yoktur.
Dördüncü neden, kuralın hiç yayımlanmamış olmasıdır. Bu, kontrolün olmadığı anlamına gelmez; yalnızca dışarıdan doğrulanamadığı anlamına gelir. Bu ayrım önemlidir: yayımlanmamış bir kural, yok sayılamayacağı gibi varmış gibi de kullanılamaz.
Böyle bir numarada hangi üç soru sorulur?
Bir numarayı denetlerken sırayla üç soru sorulur ve her sorunun cevabı bir sonraki adımın yapılıp yapılamayacağını belirler.
- Karakter kümesi uyuyor mu? Numara, düzenin izin verdiği karakterlerden mi oluşuyor?
- Uzunluk beklenenle aynı mı? Numaranın karakter sayısı düzenin tanımına uyuyor mu?
- Bir kontrol değeri var mı ve tutuyor mu? Düzen böyle bir kural yayımlamışsa hesap yapılabilir.
Üçüncü soruya cevap verilemiyorsa, ilk iki sorunun cevabı geçerliliğini korur. Yani denetim durmaz; yalnızca daha dar bir sonuç üretir. Buradaki hata, cevaplanamayan üçüncü soruyu cevaplanmış gibi göstermektir.
Soruların sırası da önemlidir. Karakter kümesine uymayan bir dizi, uzunluk hesabına hiç girmeden reddedilmelidir. Aksi hâlde hata mesajı yanlış katmanı işaret eder ve kullanıcı yanlış yeri düzeltmeye çalışır.
Dört olası sonuç nasıl ayrılır?
Denetim, bir numara için dört durumdan birini üretir ve bu dört durumun birbirine karıştırılması en yaygın anlatım hatasıdır.
| Durum | Ne anlama gelir | Neyi iddia etmez |
|---|---|---|
| Geçerli | Bütün uygulanabilir katmanlar tuttu | Numaranın verilmiş olduğunu |
| Geçersiz | En az bir katman tutmadı | Numaranın sahte olduğunu |
| Yalnızca biçim | Biçim tuttu, kontrol basamağı yok | Numaranın doğru olduğunu |
| Kural yok | Bu düzen için tanım bulunamadı | Numaranın geçersiz olduğunu |
Tablonun üçüncü satırı bu yazının konusudur. “Yalnızca biçim” sonucu, denetimin elindeki bütün bilgiyi kullandığını ve o bilgiyle ancak bu kadarını söyleyebildiğini ifade eder. Bu sonucu “geçerli” diye kısaltmak, olmayan bir katmanı varmış gibi sunmak olur.
Dördüncü satır ise farklı bir durumdur. Burada düzen hakkında tanım yoktur; yani biçim denetimi bile yapılamaz. Bu sonuç, numaranın kötü olduğunu değil, aracın bu numarayı tanımadığını söyler. Bu ikisini birbirine karıştırmak, desteklenmeyen bir düzeni “hatalı veri” gibi göstermek demektir.
Kural bulunmayan bir düzen neden hata sayılmaz?
Çünkü eksik olan taraf numara değil, denetimin bilgisidir. Bir numarayı, hakkında kural bulunmadığı için reddetmek, sistemin bilgisizliğini kullanıcının hatası gibi göstermek olur.
Bunun pratik zararı hemen görülür. Kullanıcı elindeki numaranın doğru olduğunu bilir; araç ise “geçersiz” der. Kullanıcı numarayı değiştirmeye çalışır, oysa değiştirilmesi gereken bir şey yoktur. Bu deneyim, aracın bütün sonuçlarına olan güveni zedeler.
İkinci zarar, veri tarafındadır. Desteklenmeyen bir düzeni hatalı sayan bir iş akışı, geçerli kayıtları temizleme listesine koyar. Toplu bir işlemde bu, doğru verinin silinmesine kadar gidebilir.
Üçüncü zarar, kapsamın görünmez olmasıdır. Eğer desteklenmeyen düzenler sessizce “geçersiz” diye raporlanırsa, aracın hangi düzenleri desteklediği hiçbir raporda görünmez. Oysa bu kapsam bilgisi, sonucların yorumlanması için en az sonuçların kendisi kadar önemlidir.
Doğru davranış, bu durumu ayrı bir sonuç olarak göstermek ve raporda kaç satırın bu duruma düştüğünü belirtmektir.
Yalnızca biçim sonucu nasıl dürüstçe anlatılır?
Dürüst anlatım, sonucun adını doğru koymakla başlar. “Yalnızca biçim” ifadesi, numaranın doğru olduğunu değil, bu aracın elindeki bilgiyle yalnızca biçimini denetleyebildiğini söyler. Bu ifade kullanıcıya ne öğrendiğini ve neyi öğrenmediğini birlikte anlatır.
İkinci adım, arayüzde ayırt edilebilir bir işaret kullanmaktır. “Yalnızca biçim” sonucu, “geçerli” sonucuyla aynı renk ve aynı simgeyle gösterilirse, kullanıcı ikisini aynı şey sanır. Bu ayrımın görsel olarak da korunması gerekir.
Üçüncü adım, sonucun yanına hangi katmanların çalıştırıldığını yazmaktır. Kullanıcı “biçim denetlendi, kontrol basamağı bu düzende tanımlı değil” cümlesini gördüğünde, sonucun sınırını anlar. Bu cümle olmadan, kısa bir etiket yanlış yorumlanmaya açıktır.
Dördüncü adım, bu numaraları dışlamamaktır. Biçimine uyan bir numara biçimsel olarak kabul edilmeli, geri kalan bütün yargı askıya alınmalıdır. Ne reddedilmeli ne de gerçek sayılmalıdır.
Geliştiriciler için: kapsamı sonuçla birlikte taşımak
Bu durumun doğru ele alınması, büyük ölçüde veri modeliyle ilgilidir. Her düzen için iki alan ayrı tutulmalıdır: numaranın biçimsel tanımı ve düzenin hangi katmanları yayımladığı. İkinci alan olmadan, denetim hangi durumda olduğunu bilemez.
İkinci nokta, sonuç tipinin dört durumu da taşımasıdır. Yalnızca iki değerli bir sonuç alanı, bu alanı kullanan her yerde “yalnızca biçim” durumunu “geçerli” ya da “geçersiz” tarafına zorlar. Bu zorlama, arayüzde değil veri modelinde yapılan bir hatadır ve sonradan düzeltilmesi pahalıdır.
Üçüncü nokta, toplu işlemlerde bu durumun sayılmasıdır. Bir toplu denetim raporu, kaç satırın doğrulandığını, kaç satırın yalnızca biçim denetiminden geçtiğini ve kaç satırın tanınmadığını ayrı ayrı göstermelidir. Tek bir “başarılı” sayısı, bu üç grubu birbirine karıştırır.
Dördüncü nokta, tanınmayan düzenlerin raporlanmasıdır. Desteklenmeyen bir düzenle karşılaşıldığında, bu durum sessizce yutulmamalı; hangi düzenin tanınmadığı kaydedilmelidir. Bu kayıt, desteğin zaman içinde nereye genişletilmesi gerektiğini de gösterir.
Beşinci nokta, belirsizliğin kullanıcıya taşınmasıdır. Sonuç nesnesi, hangi katmanların çalıştırıldığını ve hangilerinin atlandığını taşırsa, arayüz bu bilgiyi gösterebilir. Aksi hâlde arayüz, elinde olmayan bir kesinliği göstermek zorunda kalır.
Sonraki adımlar
İlk adım, desteklenen her düzen için yayımlanmış katmanları kaydetmek ve sonuç tipini dört durumu taşıyacak şekilde genişletmektir. İkinci adım, tanınmayan düzenleri sessizce reddetmek yerine ayrı bir durum olarak raporlamaktır. Bir numaranın hangi düzene uyduğunu ve o düzende hangi katmanların denendiğini numara doğrulama aracı üzerinden izleyebilirsiniz; biçim denetiminin hangi adımlardan oluştuğu numara doğrulama nasıl çalışır yazısında, çok satırlı listelerde bu durumların nasıl raporlanacağı ise toplu doğrulama akışı yazısında ele alınmıştır.
Bu yazıda anlatılan düzenler ve örnek diziler yalnızca durum ayrımını göstermek için kurgulanmıştır; gerçek bir numaralandırma düzenine, kuruma veya kişiye karşılık gelmez. Biçim denetiminden geçen bir numara hakkında doğruluk, sahiplik veya kullanılabilirlik yönünde hiçbir yargı üretilmemelidir.