再利用プログラムを意識して、後々楽ちんなプログラムにしていきましょ~
今日も、お仕事でプログラムを書いていたのですが、
まだまだレベルがイマイチなcacapon、
「cacaponさんが書いたプログラムは、
他のプロジェクトに再利用できない形になっちゃってるね…」
と指摘をもらいました~
確かに、「あ、あの機能いるよね」「あ、これも」とやっていたら、
そこのプロジェクト専用みたいになってしまいまして…
アドバイスも頂いたのですが、
簡単な実物を作ると理解の一助になるかと思いまして…
…再利用できそうなプログラムcalcを作ってみました♪
ただ、2つの数値を足し算するだけのプログラムです(笑
階層はこんな感じ
|--app | |--dir | | |--child.py | |--parents.py |--package | |--__init__.py | |--calc.py
プログラムはこんな感じです~
# calc.py class Calc(): @staticmethod def add(a, b): return a + b
# parents.py import os import sys sys.path.append(os.path.dirname(os.path.abspath(__file__))+"\\..\\package") from calc import Calc print(Calc.add(1, 2))
# child.py import os import sys sys.path.append(os.path.dirname(os.path.abspath(__file__))+"\\..\\..\\package") from calc import Calc print(Calc.add(3, 4))
実行結果
$ python app/parents.py 3 $ python app/dir/child.py 7
ちょっとパス追加の部分が冗長※に感じますが、
ちゃんと動いてますね~
このプログラムを作って感じたメリットですが…
①ほかのプロジェクトでも使える。
②新機能は再利用プログラムをいじるだけでOK
→例えば、calcに引き算を定義すると、parentsも、childもすぐ使える。
③見るべきところが少なくなる。
→挙動が可笑しければcalcを見ればOK。
→あとは呼び出してる場所を見れば、引数エラーなどは見つけられる。
こう考えてみると、再利用前提で作るのって、
後々修正しやすい形にもなるんですね~
今度から意識して作っていきたいと思います~
※…bashなどで
export PYTHONPATH="/<importしたいディレクトリパス>:$PYTHONPATH"
とやると冗長な部分が無くなるのですが、
packageのパスが環境変数に追加されます。
このくらいのプログラムでpath追加するのはめんどくさいと判断し、
sys.path.apendで呼び出し先毎で設定するようにしました~