Boş kodları kontrol etmek için her zaman hardcoding (sic) "" buluyorum.
Temiz kod yaklaşımı
Bunu yapmak: foo == ""
çok kötü bir uygulamadır. ""
büyülü bir değerdir. Asla büyülü değerlere karşı kontrol etmemelisiniz (daha çok büyülü sayılar olarak bilinir )
Yapmanız gereken açıklayıcı bir değişken adıyla karşılaştırmaktır.
Açıklayıcı değişken adları
"Empty_string" ifadesinin tanımlayıcı bir değişken adı olduğu düşünülebilir. Değil .
Gitmek ve yapmak empty_string = ""
ve karşılaştırmak için büyük bir değişken adınız olduğunu düşünüyorum önce . Bu "tanımlayıcı değişken adı" anlamına gelmez.
İyi bir tanımlayıcı değişken adı içeriğine dayanır. Sen boş dize düşünmek zorunda olduğunu .
- Nereden geliyor.
- Neden orada.
- Neden kontrol etmeniz gerekiyor?
Basit form alanı örneği
Bir kullanıcının değer girebileceği bir form oluşturuyorsunuz. Kullanıcının bir şey yazıp yazmadığını kontrol etmek istiyorsunuz.
İyi bir değişken adı olabilir not_filled_in
Bu, kodu çok okunabilir hale getirir
if formfields.name == not_filled_in:
raise ValueError("We need your name")
Ayrıntılı CSV ayrıştırma örneği
CSV dosyalarını ayrıştırıyorsunuz ve boş dizenin şu şekilde ayrıştırılmasını istiyorsunuz None
(CSV tamamen metin tabanlı olduğundan, None
önceden tanımlanmış anahtar kelimeler kullanılmadan edilemez)
İyi bir değişken adı olabilir CSV_NONE
Bu, None
başka bir dizeyle temsil edilen yeni bir CSV dosyanız varsa kodun değiştirilmesini ve uyarlanmasını kolaylaştırır""
if csvfield == CSV_NONE:
csvfield = None
Bu kod parçasının doğru olup olmadığı hakkında soru yoktur. Yapması gerekeni yaptığı oldukça açıktır.
Bunu şununla karşılaştır:
if csvfield == EMPTY_STRING:
csvfield = None
Buradaki ilk soru, Boş ip neden özel muameleyi hak ediyor?
Bu, gelecekteki kodlayıcılara boş bir dizenin her zaman kabul edilmesi gerektiğini söyler None
.
Bunun nedeni, iş mantığını (CSV değerinin ne olması gerektiği) karıştırmasıdır. None
) kod uygulamasıyla karıştırır (Aslında neyle karşılaştırıyoruz)
İkisi arasında endişe ayrılığı olmalı .
""
iyi değil?