![見出し画像](https://assets.st-note.com/production/uploads/images/125469543/rectangle_large_type_2_20779f42fee1337ccba7b30b9dddb74e.png?width=800)
【プログラミング】フック処理について
1.前書
よいソースコードの要素の一つとして可読性の高さが挙げられる。
おおまかなプログラムの仕組みの一つとしてフック処理(hook)というものがあり、デバッグのしやすさから自分は必ずこの処理を採用している。
ただこのソースの書き方は明確な定義があるわけではないので一つの例として参考にしてもらえたらと思う。
※この記事で扱う言語はPythonだが、どの言語でも応用がきく
※ソースコードはあくまでサンプルで作りたいプログラムに沿って適宜関数を増やしたり引数や返り値を設定したりすること。
2.ソースコード
import datetime #時間取得のため
def step_input():
print ("input処理_移行",datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S'))
#ここに処理を書く
print ("input処理_終了",datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S'))
print ("")
def step_main():
print ("main処理_移行",datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S'))
#ここに処理を書く
print ("main処理_終了",datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S'))
return
def step_end():
print ("end処理_移行",datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S'))
#ここに処理を書く
print ("end処理_終了",datetime.datetime.now().strftime('%Y年%m月%d日 %H:%M:%S'))
print ("")
step_input()
step_main()
step_end()
3.解説
実行すると次の順で関数が実行される。
①step_input()
②step_main()
③step_end()
ただそれだけである。
それだけであるが、プログラムが複雑になるにつれてこのありがたみが増す。
カードゲームをイメージしてもらいたい。
あなたは遊◯王のゲームの開発メンバーでデバッグ担当だとする。
遊◯王はフェイズに沿ってゲームが進行しており、プログラムの処理としては関数【スタンバイフェイズ】、関数【メイン1フェイズ】、関数【バトルフェイズ】、関数【メイン2フェイズ】、関数【エンドフェイズ】が順繰りに実行されものとする。
あなたは「モンスターが攻撃をしたときに発生する不具合をデバッグしないといけない」という仕事が割り振られたとする。何千何万行と並ぶソースコードの中かから不具合箇所を見つけないといけない。
そのとき、あなたはとりあえず関数【バトルフェイズ】の中身を確認するところから始めればいいのである。
ソースコードを読む前からアタリを付けられるというのは大変ありがたい。
可読性の高さの究極系は「読まなくてもわかる」だと個人的に思っている。
この記事が気に入ったらサポートをしてみませんか?