ルーチンを呼び出すときにルーチンの前提条件をチェックする方法を知りたいので、ルーチンを実行したり、実行できないことを通知したりできます。言語はC#です。
Controller オブジェクト、DataContainer オブジェクト、およびいくつかの Task オブジェクトを使用してPipeline デザイン パターンを実装しています。コントローラがタスクの実行を要求するとき、各タスクはその適用可能性をチェックする必要があります。具体的には、DataContainer オブジェクトで使用可能なデータを確認する必要があります。
Pythonでそれを行ういくつかの方法を想像できました:
#
if Task.can_run():
Task.run()
else:
Task.notify_controller()
#
if Controller.check_runnability(Task):
Task.run()
else:
Controller.do_something_else()
# Task.can_run() throws exception instead of returning boolean:
try:
Task.can_run();
except:
Controller.do_something_else() # or maybe Task.notify_controller()
else:
Task.run()
# not sure about syntax for the following assertion, but you get the idea
assert (Task.can_run(), Task.notify_controller())
Task.run()
私が知りたい (そして Google で見つけられなかった) のは、前提条件が満たされた場合にのみルーチンを開始するための「標準的」/最も一般的/「正しい」C# イディオムです。