はじめに(起)
現役をリタイヤーして早や、15,6年になります。今でも、趣味で、Webサイトのページを作成しています。そこで、自身に困惑しているなることがあります。これまで作成してきたソースコードは長年のメンテナンスでかなりゴミ交じりのコードになっています。そのたの適宜、ソースコードの整理を始めますがいつでも中途半端で終わっています。いざ、やり始めても、やることが多すぎてあきらめてしまいます。これまで、その繰り返しです。
なぜできないのか(承)
理由はいろいろあります。
・本気で時間をかけてやろうとする意欲が出ない。
理由は、趣味で行っていることが原因です。仕事であれば、ある程度の結果は出せるとは思いますが、
・これも下手に手を出すと返って藪蛇になることもあります。
よく、システム更新時に起こる問題です。世の中のあるシステムでも問題になっています。プログラムコードはちょっと修正しただけでも、その後にとんでもないシステム事故になることがあります。
今の時代は車でも電気製品が多く組み込まれています。その中にプログラムが組み込まれていてときどき不具合が発生してリコール問題を引き起こします。何百万台の走行中の車を回収してプログラムを入れ替えなければなりません。
・ゴミと化す不要コードが残存している問題(承)
不要コードなのか、必要なコードなのかの判別が簡単ではないため、どちらを選択するかと言えば残存させた方が安全。下手に削除してしまうと、後でundefinedというエラーが発生することがたまにあります。あの時、削除してしまったことが原因だつたということがあります。この不要か不要でないかを見極める手段としてalert()文またはconsole.log()を仕込んでおきます。ただし、alert()文は公開環境で使用することはできません。これは、すべてのパスをテストすることはほぼ不可能だからです。ステップ数が数千規模のプログラムになるとその組み合わせテストが無限とは言わないまでも膨大な数に上ることがあります。そのための罠を仕掛けておきます。それでも、すべての不要コードを見極めることは大変な作業です。
整理ツールは使えるか(転)
・ソースコードの整理のためのツール
いろいろなツールがありますが、中々、ピッタリしたものはありません。
・AIツールはどうか?
使ったことはありませんが、どうもしっくりきません。理由は、AIが考え出したものは、自分の脳で考えたものではないので、そのまま鵜呑みにしていると脳の低下になりはしないかと心配になります。昔のプログラマーなので、やはり、自分で考えだしたものでないと信用できないということがあります。なので、AIには頼りたくありません。
・エディターのツールとか(転)
今使っているエディターにもツールはありますが、不要コードの削除というツールはありません。それは、それだけ対処が難しいということだと思います。
・未使用変数のチェック(転)
表示上は、下線が出て、ホバーすると未使用ですという表示が出ています。それらは本当に未使用なので、削除してもいいかもしれません。
・未使用の関数を見つけること(転)
未使用の関数を見つけることは比較的簡単です。エディターの検索機能で、コード全体で呼び出している関数があるかどうかをチェックします。ヒットすれば、使用していることになります。ヒットしなければ、使用していないことになりますので、削除できます。
・削除しないでいったんコメントにしておく(転)
いきなり、削除してしまうと後で後悔することにもなります。もし、必要だったとわかっても元に戻せません。そこで、いったん、コメントにしておきます。見栄えは悪いですが安全かもしれません。
重要なこと(結)
ソースコードを整理して見直した場合、しばらくの期間は運用して様子を見ることになります。その期間にもしかしたら、修正ミスでエラーを発生したかもしれません。そのため、修正前のソースコードは保存しておきます。いつでも、復旧できるようにしておきます。
結論(結)
この困惑(ソースコードの整理)の今の結論としては、AIに頼ることは危険すぎるので、というより怖い(もし有効なコードが削除されてしまったらという不安)ので、使いたくはありません。確実な方法は自分で、検索、置換を用いて一括修正変更するとか、一件ずつ修正するとかして地道に行うことがいいのかなと思います。
あとがき(結)
このソースコードの整理は、次のステップとしてのソースコードのクラス化を考えています。今のコードはベタ書きで、オブジェクトやクラス化を考えなくコーディングしてきたものです。かなり長い年月をかけて修正、機能追加を繰り返してきたものです。そのため、ごみのようなコードになっています。いつか整理したいと思っていながら、今日まで来てしまいました。ようやく、気持ちの整理がついてきたところで、そろそろクラス化してすっきりとしたソースコードにしたいと思っています。
(追記)
まだ、書き足りない点があり、随時、補足して行きたいと思います。