2016-07-22 7 views
1

私は、データフレームに何百万もの行をロードし、グローバルとして宣言しているので、過去のデータベースを使用しているように自分の関数(> 50)を使うことができます。私は、グローバルを使用することは悪いことであり、それに対するメモリマッピングのためにグローバルを使用するのが遅いことを読んでいます。グローバルデータフレーム - 良いか悪いか

グローバルが悪いかどうか尋ねたいのですが、どのようにすればよいでしょうか?関数とネストされた関数の周りに> 10データフレームを渡すと、非常にクリーンなコードでもないようです。 別の関数が異なるセルを更新したり、データフレームからデータを削除したりするため、プログラムが扱いにくくなっているので、データフレームをラップしてクラスを管理しやすくしています。それは良いアイデアですか?

+0

実際のコードを見ることなく、非常にターゲットを絞ったフィードバックを与えるのは少し難しいです。より具体的な提案を得るには、いくつかの機能をhttp://codereview.stackexchange.com/に投稿することを検討してください。 –

答えて

2

はい。グローバルを使用する代わりに、データをオブジェクトにラップし、そのオブジェクトを関数に渡す必要があります(依存性注入を参照)。代わりに、グローバルな意志を使用するオブジェクトでラップ

  1. は、ユニットにあなたのコードをテストできるようにします。これは絶対に重要な理由です。グローバル変数を使用すると、グローバルな性質のためにコードを単独でテストすることは不可能なので、コードをテストするのは辛いことになります。
  2. ランダムな変更可能性のバグを心配することなく安全にコードを実行します。
  3. すべてがグローバルであるために起こる恐ろしい並行性のバグを停止します。
+0

はい、私は今直面しています。どのようにそれらを包みますか?各データフレームの各クラスは?あなたはデータフレームを管理するために標準的なクラス構造を提案していますか? – desmond

+0

「DataFrame」というスーパークラスを作成し、各タイプのデータフレームを継承させることができます。すべてのグローバルをそれらのクラスにリファクタリングするだけです。彼らはすべてグローバルに頼っているので、すべてのコードを壊してしまいますが、おそらくこれは変更に非常に時間がかかるでしょう。 (基本的にすべてを変更しなければならないでしょう) –

+0

ありがとう、私は理解するつもりです、このような構造を書くように導くURLを知っていますか?その恥ずかしいですが、私のコード全体はちょうど今の機能です... – desmond

関連する問題