Neden MongoDB Java driver rastgele bir sayı koşullu jeneratör kullanıyor mu?
MongoDB's Java Connection driver this commit aşağıdaki kodu gördüm ve ilk bakışta bir tür fıkra gibi görünüyor. Aşağıdaki kod ne yapar?
if (!((_ok) ? true : (Math.random() > 0.1))) {
return res;
}
(EDİT: kodu bu soru gönderme has been updated since)
CEVAP
Bu hat tarihini inceledikten sonra, ana sonucum iş yerinde bazı beceriksiz programlama olmuştur.
Bu hattı gereksiz yere karmaşık. Genel formu
a? true : b
boolean a, b
basit eşdeğerdira || b
Olumsuzluk ve aşırı parantez çevresindeki her şeyi daha da convolute. Akılda De Morgan's laws tutarak bu kod parçası anlamına geleceği önemsiz bir gözlem
if (!_ok && Math.random() <= 0.1) return res;
originally introduced this logic olduğunu taahhüt eder
if (_ok == true) { _logger.log( Level.WARNING , "Server seen down: " _addr, e ); } else if (Math.random() < 0.1) { _logger.log( Level.WARNING , "Server seen down: " _addr ); }
&; beceriksiz kodlama başka bir örnek, ama dikkat edin . - ^em>mantık tersburada olay
_ok
ya da diğer vakaların 'unda da, 2 kod ise kaydedilir.verirBu kez 10% ve 90% günlükleri. Daha sonra harap sadece netlik tamamlama, ama kendisi doğruluğu.Kod aslında yazar
if-then
orijinal tersi içine bir şekilde kelimenin tam anlamıylareturn
ilk durum için gerekli dönüştürmek amacıyla nasıl görebiliriz attılar sanırım. Ama sonra eline yüzüne bulaştırdı ve etkili "" eşitsizlik işareti ters çevirerek. çift negatif eklenenKenara tarz sorunlar kodlama, stokastik günlüğü özellikle günlük girdisi kendine özgü bir davranış belge olmadığından kendisi tarafından oldukça şüpheli bir uygulama. Sunucu şu an kapalı. niyeti, belli ki, aynı gerçeği restatements azaltılması: Uygun çözüm, sadece oturum açmak içindeğiştirirserver devletin değil, her bir gözlem, bırak 'u bu tür gözlemlerin rasgele bir seçim. Evet, biraz daha çaba alır, biraz bakalım.
Sadece beceriksizliğin tüm bu kanıtlar, teftiş biriken umuyorumkod üç satır sadeceda , bunu konuşmak değil, bir bütün olarak proje, iş ve bu parça en kısa sürede temizlenecek.
Neden insanlar rastgele bir sayı kulla...
Neden java ile sonuna kadar.lang.Casba...
Neden Java API yerine veya bayt int kı...
Neden't java değil.lang.Sayı uygu...
Neden kimse Java için mi kullanıyor?...