2017-03-14-01-コード・ロンダリング - project-enigma

2017-03-14-01-コード・ロンダリング

>> Site top >> weblog >> 月別アーカイブ >> 2017年03月のlog >> 2017-03-14-01-コード・ロンダリング

最終更新日付:2017/03/14 08:38:42


コード・ロンダリング

2017 年 03 月 14 日

steam が(ほぼ)一段落した。非常に大きな機能追加が控えているが、それはちょっとお勉強をしないとできそうにない。もちろんそのお勉強は進めているのだけれど、そのかたわらでついうっかり始めてしまったのが、「他人様の古いコードを動くようにする」、という作業。

今から書くことは、人によっては「悪口」と受け取るかもしれないので予め書いておくけれども(といってもこの weblog には大した数の読者はいないと思うが)、自分にはそのような意図は一切ない。(少なくともこのページの中で)他の人や、その行為を否定するつもりは無いし、そもそもそんなことに興味はない‥‥‥と断り書きを済ませた上で本題に入るとしよう。

その「他人様の古いコード」は、自分としては毎日使っているものだが、どうもメンテナンスされていないっぽい。毎日使っているという以上、「動くようにする」もなにもちゃんと動いている。ただし、15年くらい前にコンパイルされたもので、現状ではコンパイルすると警告とかインクルードエラーとかが出てくる。そもそもあまりキレイに書かれたモノでもなく、正直読み難い、というか読めない。安直に大域変数を使い過ぎだし、1文字の変数を使い回しているし、const-ness も無視しているし、変数の命名も酷い。ヘッダファイルに至っては冗長インクルードガードもない。いたるところにコメントアウトやプリプロセッサディレクティブで殺してあるコードが見受けられることから、ソース管理も使っていなかったようだ。

で、このまま放置するといずれ自分が困るので、ではいっちょキレイにしますかと。要するにそういうわけだ。基本的には動作は変えずにコードをキレイに再構成するので、まぁリファクタリングと言って良いと思う。ただし、今後「自分が使うモノ」としては自分がメンテナンスしていくことになるため、この機会に徹底的にやるつもり。C で書いてあったのが C++ になるし、コンポーネントの構成もすでに大きく変わりつつある。おそらく、最終的には「同じ動作をする全く別のプログラム」になることだろう。自分はこういうのをコード・ロンダリングと読んでいる。念の為に書いておくけれども、だからと言って「これは自分が作ったプログラム!」とか主張するつもりはないよ。ソースコードを構成するバイト列なんて、そのプログラムがすることとその元になっているアイデアに比べればほとんど価値はない。自分は今後も自分が使い続けることができるよう、自分でコードをキレイにしているが、元々の作者は変わらない。たとえオリジナルのコードが1バイトたりとも残っていないとしてもね。

さて、2段落前の後半で色々書いたけれど、オリジナルの作者をディスったように思われたかもしれない。自分としては、これは「コードを書くのが手段に過ぎない人」の特徴だと思っている。実際、オリジナルの作者はわりと著名な方だが、プログラミングが本業の人ではない。で、ここが大事なのだけれど、「そういう人達にはそういう人達の闘いがある」のだ。何かを作りたいと思っていて、そのために不得手でもプログラミングをする。作りたいものが出来上がれば、バグを取って、それで終わり。コードを書くことが上手になりたいと思うことがなければ、上手になるわけもない。でも仕方ないだろう。彼らは他のことの専門家であり、忙しいのだ。責めても仕方ない。むしろ、コードを公開してくれていて、他のユーザがメンテナンス(あるいは改善)をする機会を与えてくれていることの方を喜ぶべきだろう。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : 開発

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.