Sık sık kendimi bir yöntemden bir boolean döndürürken, bu yöntem çevresindeki tüm mantığı tek bir yerde içermek için kullanılır. Tüm (dahili) çağrı yönteminin bilmesi gereken işlemin başarılı olup olmadığıdır.
Python kullanıyorum ama soru mutlaka bu dile özgü değil. Aklıma gelen sadece iki seçenek var
- Koşullar istisnai olmasa da bir istisna oluşturun ve bu istisnayı işlevin çağrıldığı her yerde yakalamayı unutmayın.
- Yaptığım gibi bir boole döndürün.
Bu, neden bahsettiğimi gösteren gerçekten basit bir örnek.
import os
class DoSomething(object):
def remove_file(self, filename):
try:
os.remove(filename)
except OSError:
return False
return True
def process_file(self, filename):
do_something()
if remove_file(filename):
do_something_else()
İşlevsel olmasına rağmen, bu tür bir şey yapmayı gerçekten sevmiyorum, "kokuyor" ve bazen çok fazla iç içe ifs ile sonuçlanabilir. Ama daha basit bir yol düşünemiyorum.
Daha fazla LBYL felsefesine dönebilir ve silmeye os.path.exists(filename)
çalışmadan önce kullanabilirim ancak dosyanın bu arada kilitlenmeyeceğine dair bir garanti yok (olası değil ancak mümkün) ve hala silme işleminin başarılı olup olmadığını belirlemek zorundayım.
Bu "kabul edilebilir" bir tasarım mıdır ve değilse bunu tasarlamanın daha iyi bir yolu olabilir mi?