msusur / kodlama-pratikleri

Bu projenin amacı yazılım geliştirmeyi öğrenmekte olan ya da işi Code Golf seviyesinde ele almak isteyenlere uğraşacak problemler çıkartmaktır.
153 stars 40 forks source link

Python ile yazılan çözümlerde print yerine `assert` statementi kullanilmali #37

Open ghost opened 6 years ago

ghost commented 6 years ago

https://github.com/msusur/kodlama-pratikleri/blob/5b846973cc929f46272449ba319e912a9f182376/cozumler/dijital-toplam-problemi/python/digital_sum.py#L6

Doğrulama aşamasında print ile çıktı vereceğimize assert ile sonuçtan emin olduğumuzu belirtmeliyiz bence. Bu sayede uygulamayi çalıştırmadan sonucundan emin olabiliriz. Siz ne düşünüyorsunuz?

cevherkarakoc commented 6 years ago

Böyle bir şey yapılacaksa diğer tüm dillerde de benzer test komutları kullanılmalı.

enderahmetyurt commented 6 years ago

bence unit testleri yazmak gerekiyor. böylelikle basit bir şekilde test yazmak da öğrenilmiş olur. bununla alakalı bir issue acacaktım ama gerek kalmadı :)

ghost commented 6 years ago

Olabilir. Çünkü print veya import sys;sys.stdout.write gibi olaylarda verilmesi gereken çıktı kod okunurken anlaşılmıyor (özellikle karmaşık algoritmalarda)

enderahmetyurt commented 6 years ago

bana kalırsa print vs gibi çıktı komutlarının kullanılıp kullanılmaması çok dert değil. ama testsiz case'ler dert olabilir. sonuç olarak @msusur test konusunda ne diyor onu da dinlemek gerek.

msusur commented 6 years ago

Kesinlikle katiliyorum ve destekliyorum. Hatta ve hatta PR'lardaki bosluklarin olmamasi ya da indentation rule'larinin farkli olmasi da beni cok rahatsiz ediyor ama ukalalik yapmamak icin sesimi cikartmiyordum.

Test konusuna donersek, evet bence cok guzel olur. Hatta sorularda da ornek ciktilar yerine test case'leri verebiliriz. Boylece once sorunun dogru cozumunu verip vermediginden emin oluruz sonra da kodu degerlendiririz. Benden 👍

enderahmetyurt commented 6 years ago

yok abi bence çok haklısın. her dilin kendi style guide'ları var. oraları referans gösterebiliriz. Test case'ler soruların altlarında olmalı zaten. bu input, bu output'u çıkarır gibi.

ghost commented 6 years ago

assert zaten bir test statementi ve tam olarak dediğiniz yapiyor ("bu input bu outputu çıkarır eger cikarmazsa AssertionError raise eder") fakat her çözüm icin ayri ve bir kac farkli ornekten olusan bir unitttest yazilsa tadından yenmez.

@enderahmetyurt +1

enderahmetyurt commented 6 years ago

kapasak mı? @msusur

msusur commented 6 years ago

Aslinda bunu bir CONTRIBUTING.md yarattiktan sonra kapatmayi dusunuyordum. Boylece kurallari guzelce ifade edebiliriz.