私はこの哲学について個人的な「宗教的な」意見を求めているのではなく、もう少し技術的な意見を求めています。
このフレーズは、コードが「pythonic」であるかどうかを確認するためのいくつかのリトマス試験の1つであることを理解しています。しかし、私にとって、pythonicは、クリーンでシンプルかつ直感的であり、悪いコーディングのための例外ハンドラーがロードされていないことを意味します。
だから、実際の例。クラスを定義します:
class foo(object):
bar = None
def __init__(self):
# a million lines of code
self.bar = "Spike is my favorite vampire."
# a million more lines of code
さて、手続き型のバックグラウンドから来て、別の関数でこれを実行したいと思います:
if foo.bar:
# do stuff
せっかちで、最初のfoo = Noneを実行しなかった場合、属性例外が発生します。それで、「許可ではなく許しを求める」は、代わりにこれを行うべきだと示唆していますか?
try:
if foo.bar:
# do stuff
except:
# this runs because my other code was sloppy?
クラス定義をよりあいまいなままにするために、tryブロックにロジックを追加する方がよいのはなぜですか?最初にすべてを定義して、明示的に許可を与えてはどうでしょうか。
(try /exceptブロックの使用について私を殴らないでください...私はどこでもそれらを使用します。私は完全なプログラマーではなかったので、自分のエラーをキャッチするためにそれらを使用するのは正しくないと思います。)
それとも...私は「許しを求める」というマントラを完全に誤解していますか?