Doğrulama için bir doğrulayıcı fonksiyon yazılmış ama doğrulayamadığı durum yönetilmemiş. Bu durumda doğrulayıcı demek doğru mudur bilemedim.
Hem doğru hem yanlış.
Evet yazılım döngüsü, kodu geliştirmek,kodu test etmek, kodu kullanıcı geri beslemeleri ve çeşitli nedenlerle geliştirmek, hata bildirimlerini dikkate alarak yeniden düzenlemek şeklinde ilerler.
Aslında bu kısmı uzunca anlatırdım ama bu gün o gün değil. Her neyse. Sonuçta bir şekilde kodunuzda kullanım aşamasında da yeniden hatalar çıkabilir ve kodunuzu yeniden yazarsınız.
Burada hedef, kodun kırılamaz olmasıdır. Yani hatalarla başa çıkabilme kabiliyetini artırmaktır. Çünkü hataları her zaman ön görmek mümkün değildir.
Hele ki hata çeşitlerini düşünürsek bütün hataları öngörmek mümkün olmayabilir ama amaç hep hatalara karşı dirençli kod yazmaktır. (Bunu neden yazdığımı sonda açıklarım.)
Şimdi adamın haleti ruhiyesini kestiremiyorum. Adamın canı mı sıkkındı, edinilmiş eski tecrübelerden karşısındaki insanla mesafeyi mi koruyor, bazı zeki insanların iletişim becerileri zayıftır konuşmayı açıklamayı sevmez o tip biri midir, yoksa kulaktan dolma belletilmiş çaresizlik durumundan kendi de bu varsayımı kabul etmiş ve sorgulamamış mıdır bilemedim…
Ama birine bir şeyi yapma dediğimde yapmamasından emin olmak istediğimde kesinlikle nedenini dikkatli ve net bir şekilde açıklarım. Aksi halde murphy kanunları bana o yapma dediğim kişinin yaparak geri gelerek yeni bir sorunu geri bana getirir.
Başta hem evet hem hayır demiştim bu bölümde konuya biraz açıklık getirmeye çalışalım.
Daha önce de söylemiştim tekrarlayayım.
Vaktinde durum muhakemesini yapmayan ileride kriz yönetimi ile uğraşır.
Biz her zaman olası hatalara karşı dirençli bir kod ve program yazmayı hedefliyoruz. Yani kullanıcıdan yada algoritmadan veyahut başka herhangi bir yerden gelen hataya neden olan değişikliklere dirençli bir kod ve bunu sağlamak için de iyi bir hata yönetim mekanizması kurmak hedefimiz.
Burada bir riskten bahsetmiş.
Güzel düşünce. Kullanıcınıza gönderdiğiniz ürünün, çalıştıracağı/koşturacağı konfigürasyon farklı iste hata yönetiminiz asert ile boşa çıkabilir.
Yani yorumlayıcının debug = False yapılması durumunda yada sizin yazdığınız modülü kullanacak asıl programın bunu devre dışı bırakması durumunda sizin kodunuzun hata yönetim kapasitesi devredışı kalmış olacaktır.
Bu risk her zaman göze alınamayabilir. Hele ki bu durumdan kaynaklı bir hatayı kontrol etmek de oldukça zor olacaktır. Ürünü kullanan kullanıcının konfigürasyonuna bakmak gerekir ki, kendi kodunuzun bakımını yapmak mı yoksa kullanıcının sistemine bakıp hata aramak mı dersek daha kolay anlaşılacaktır.
Şimdi hem evet hem hayır dediğim kısmına biraz daha netlik getirmeye çalışalım.
Olmaz diye bir şey yoktur, hangi riski ne seviyede almak istediğinize bağlı, yada özel ihtiyaçlarınıza bağlı.
Hayır kısmı için, göz ucuyla bir ara bakmıştım, şu anki durumu takip etmedim ama kodun debug modunu runtime olarak kontrol edebiliyoruz. (2.x 3.x arasında farklı diye hatırlıyorum.)
Ama en azından debug modunu garanti edecek başlatma scripti ile asıl kodu çalıştırabilirsiniz.
Diğer tarafta yine başta söylediğim, yazılım geliştirme süreci ve durum muhakemesi konusuna dönelim.
Kim bir assertion fail ile sonlanan programdan hoşlanır ki? Neden bu hataları ön görüp, try except blokları ve koşullu kontrollerle denetim altına almaya çalışmayalım.
Tabi şu da aklıma gelmişti assertion fail’ler yönetilebilir mi? Evet bir kaç yerde bunun da dolaylı yöntemlerini gördüm ve fakat hala şu soru kafamda. Bir anda bir hata mesajı ile kapanan programlardan hoşlanıyor muyum?
Hayır. Bu durumda kod geliştirme sürecinizi sürekli kodu ayakta tutmak ve hataları yönetmek üzerine kurmalısınız.
Hata yakaladığınızda sonlandırmak üzerine kurmak mantıklı görünmüyor yine istisnalarını da unutmayalım. Bir döngü içine kapsolmuş bir kodu sistemi kurtarmak için kodu sonlandırmak da gerekebilir.
Terminalde CTR+C ,CTRL+Z yada Windowsta Alt+F4 de hiç karşılaşmadığımız durumlar değil.