Test kodunun istehsala girməsinə imkan verməyin
TL;DR: isTesting və ya oxşar bayraqları əlavə etməkdən çəkinin.
isTesting kimi bayraqlar əlavə etdiyiniz zaman test və istehsal kodunu qarışdırırsınız.
Bu, yalnız testlərdə aktiv olan gizli yollar yaradır.
Həmçinin, siz real istehsal kodunu əhatə etmirsiniz.
Siz səhvlərə və gözlənilməz davranışa gətirib çıxaran test davranışını istehsala göndərmə riski daşıyırsınız.
struct PaymentService { is_testing: bool, } impl PaymentService { fn process_payment(&self, amount: f64) { if self.is_testing { println!("Testing mode: Skipping real payment"); return; } println!("Processing payment of ${}", amount); } }
trait PaymentProcessor { fn process(&self, amount: f64); } struct RealPaymentProcessor; impl PaymentProcessor for RealPaymentProcessor { fn process(&self, amount: f64) { println!("Processing payment of ${}", amount); } } struct TestingPaymentProcessor; impl PaymentProcessor for TestingPaymentProcessor { // Notice this is not a mock fn process(&self, _: f64) { println!("No payment: Skipping real transaction"); } } struct PaymentService<T: PaymentProcessor> { processor: T, } impl<T: PaymentProcessor> PaymentService<T> { fn process_payment(&self, amount: f64) { self.processor.process(amount); } }
Siz isTesting , mühit == 'test' , DEBUG_MODE kimi şərti bayraqları və bu kimi deyimləri axtararaq bu qoxunu aşkar edə bilərsiniz.
Bunlar sınaq davranışının istehsal koduna sızdığını göstərir.
Test və istehsal kodu arasında aydın bir fərqə ehtiyacınız var.
Onları qarışdırdığınız zaman real dünya davranışı ilə proqram arasında təkbətək Bijection pozursunuz.
Mühitlər real dünya obyektləri olduğundan siz onları MAPPER- də açıq şəkildə modelləşdirməlisiniz.
Süni intellekt tərəfindən yaradılan kod tez-tez test üçün sürətli hacklərdən istifadə edərkən bu qoxunu təqdim edir.
Bəzi alətlər isTesting kimi bayraqları təklif edir, çünki onlar rahatlığı düzgün dizayndan üstün tuturlar.
Süni intellekt alətləri sınaq vəziyyətlərinə əsasən şərti məntiqi qeyd etmək üçün konfiqurasiya etsəniz, bu qoxunu tuta bilər.
Unutmayın: AI köməkçiləri çoxlu səhvlər edirlər
Təklif olunan göstəriş: IsTesting metodunu silin və mühitləri modelləşdirməklə onu əvəz edin
Müvafiq göstərişlər olmadan | Xüsusi Təlimatlar ilə |
---|---|
isTesting bayraqlarından istifadə etməyin.
Test və istehsal məntiqini ayrı saxlamaq üçün asılılıq inyeksiyasından istifadə edin və mühitləri modelləşdirin.
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xiii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-vi-cmj31om
Kod qoxuları mənim fikrimdir .
Unsplash -da Christian Gertenbach- ın fotoşəkili
Sınaq bayraqları əlavə etdiyiniz zaman istehsala olan inamı sarsıdırsınız.
Ward Cunningham
Bu məqalə CodeSmell Seriyasının bir hissəsidir.