ガマンしながら使っていたが限界。
importの問題
- 循環インポート(相互importするとエラーになり実行不可)
- 実行ディレクトリに応じてimport文を書き換えねばならない
- パッケージは名前空間にならない場合があり、そうしないと参照できない場合がある(sys.path, PYTHONPATH指定による参照)
- 標準ライブラリなどと名前が重複すると使えなくなる(エラーメッセージもない)
規模が大きくなると、ファイルを分割して書きたくなる。しかし、分割するとimport問題にぶちあたる。やがて上記のimport問題を回避しながらの実装が不可能になり、破綻する。GitHubアップローダを書いたときも同様の問題に直面した。
また、以下が苦痛すぎる。
- import文を書き換えねばならない
- ディレクトリ名(パッケージ)、ファイル名(モジュール)を変更するたびに
- 参照する全ファイル対象
- ディレクトリ名(パッケージ)、ファイル名(モジュール)を変更するたびに
規模が大きくなると不都合になる点
ほかにも強いストレスを感じていた点がある。
- カプセル化できない
- どこでも代入できるから全体のコードを把握せねばならない
- メタクラスがあるから構文だけ覚えても不足。全コードを把握せねばならない
- 完成度が低い
- 変化が激しい。バージョンごとの差が激しい
- 名付けに統一性がない
- 無くていいようなメソッドが多い
- 無理してクラスの概念に似たものを取り入れているから混乱する
- 型付けがないから見分けがつかない(パッケージ、モジュール、関数、クラス(型)、変数、メソッド、プロパティ、…)
すべて動的言語の特徴と思われる。使いこなせない自分が悪いのだろうが、コード規模が大きくなると、どうしても無視できない大きな問題になる。
こまかい愚痴
- エラーがわかりにくい
- インデントエラーがウザい
なぜPythonを使ったか
requestsライブラリで簡単にWebAPIを叩けるから。
これ以外でPythonを素晴らしいと思えたことはあまりない。
C#4.0でHTTP通信がエラー無く楽にできたらC#に戻りたい。
所感
これまでも何度かこの問題にぶつかった。適当な目安として、50行以上のコードはPythonを使わないほうがいいのではないか。