可読性をあげる
なるだけelse節をつかわない
if文は真のものが通過して何らかの処理.それ以外は即returnできるように.
もし あれで
{
もし これで
{
ああやって
もし それで
{
もし こっちだったら { }
もし そっちだったら { }
}
}
}
もし あれで の反転
return
もし これで の反転
return
ああやって
もし それで
{
もし こっちだったら { }
もし そっちだったら { }
}
密結合を避ける
if文自体もなるだけつかわない
微妙に違うが本質的には同じような処理はインタフェース等でメソッド名をしばって処理.処理そのものは実装したクラス側が判断する.
メソッド ファイルをダウンロードして保存(URL)
{
URLのMIMETYPEを保持
バッファにURLのデータを保存
もしMIMETYPEがテキストだったら圧縮して保存
もしMIMETYPEが画像だったら縮小して保存
もしMIMETYPEが...
}
こうするとコードが密結合してしまい,機能が増えるにつれメンテナンス性が著しく下がる.また機能の削除をするのもリスクが高くなってくる.
クラス ダウンロード処理クラス
{
メソッド ファイルをダウンロードして保存(URL)
{
URLのMIMETYPEを保持
バッファにURLのデータを保存
リフレクションを使いMIME名からクラスを引いてくる
上のクラスの"バッファを処理"というメソッドを呼ぶ
}
}
インタフェース バッファが処理できる
{
メソッド バッファを処理(バッファ)
}
クラス テキスト処理クラス(バッファが処理できる)
{
メソッド バッファを処理(バッファ)
{
圧縮して保存
}
}
クラス 画像処理クラス(バッファが処理できる)
{
メソッド バッファを処理(バッファ)
{
縮小して保存
}
}
しかしこういった処理はJavaやC#ではけっこう大変.Pythonはかなりアバウトに作れるのでオススメ.