あえてPythonの弱点をあげてみる
class A(object): def __init__(self): self.length = 0 def get_length(self): return self.length a=A() if something==wrong: logger.error('Length: %s'%a.get_lenght())
要するにエラー処理の中でタイポしちゃったりすると、テストを入念にやらないと、エラー時に始めてバグを召喚するという事態になる。
まぁEclipse+PyDev使ってればこの辺は気付けるけどgeditとか素のviでちょちょっと書いてはまる罠。
あと他人に使って欲しいライブラリを書く時、
Class A{ public void load(String s){} public void load(File file){} public void load(InputStream is){} }
が、
class A(object): def load_from_str(s): pass def load_from_file(filename): pass def load_from_fp(fp): pass
みたいに意味を付けてあげなきゃならなくなる。ぜんぶload()に統合すると何からロード出来るのかドキュメントを書く手間が別途発生する。
ドキュメントは必ず書けよという話ですが。