2019/12/07
■ [変愚蛮怒/開発]変愚開発日誌part300…Doxygenで2.2.1rから2.2.2-Refactoringの比較をちっとしてみる
はじめに
何かPart300とかになってますが、数え方いい加減な上に雑に続けてきただけなので何もめでたくないです。恥の多い開発を送ってきました。
去年のカレンダーで散々新要素にチャージマンとかマーフォークとか追加してたくせにそいつがバグ塗れだったり微調整だったり、単にサボっていたりで2.2.2リリース出来てません。
なにやってたんだヴォケと言われればリファクタリングです。必ずしもする必要はないのですが、将来の拡張性とか、ソースのライセンス絡みを更新するための書き起こし直しの検証とかを狙っていたりして泥沼にはまりました。
何年かぶりにDoxygenでデータ化したので何となく何やってきたか比較してみましょう。
ソースをそもそも分割したり整理してみている
2.2.1rくらいの時点で、もう200kB超えのファイルがだらだら並んでいたりしました。全くソース的に関係のないところに無関係の関数があったりしました。同じような、あるいは似たようなことをやる関数が別々に実装されていたり、もう辛抱たまらなかったので、切り分けたりしてました。
大体良くなったとは思うのですが、ヘッダファイルとソースファイルの宣言位置の齟齬とかはチケットで突っ込まれている通り、まだ残っていたりするので何とかします。
グローバル変数を各構造体にぶち込んで整理しなおした
グローバル変数上で関数の値渡しされていたりする悪夢とかは依然も何度か話した次第ですが、それに加えて
- どう見てもプレイヤー自身に属する要素がplayer_type構造体に含まれずにグローバル変数に放置されている。
- 逆に要らなさそうなのがplayer_typeに存在している
とか色々しんどいのが多かったのでこれを大分直したつもりです。
似たようなことをフロア構造体であるfloor_typeにもやったり、ゲーム全体に関する値はworld_typeとか突っ込んだりもしてます。
用語をあれこれ直した
例えば"cave"という表現が昔はあったわけですが、これが何を指すのかが
- キャラクター一個分のマス目を指す。(grid)
- フロア一つそのものを指す。(floor)
- 生成される部屋の中でも天然の洞窟状のものを指す。(generate_何たら付きの関数)
とか色々紛らわしいことになっていたので、()の通りに名称を変更したりしてました。置換処理に誤ってコメントの中身まで変えてしまった問題を外国人兄貴にチケットで突っ込み入れられたりしてます。大変申し訳ないと同時に、まだ注目してもらっている件を大変うれしく思ってもおります。
いつ終わるのかしら
正直まだわかんねえっす。これからのリアル事情と自身のおメンタルで大きくぶれます。ゆ る し て。