

C++やPythonなどで、自分が使いやすいようにクラス化しているのですが、  
時間がたつと、どんなものを作ったのか忘れてしまい、車輪の再発明をしてしまいます。

皆さまは、自作したクラスや関数などをどのように管理されているでしょうか？  
漠然とした質問で大変申し訳ありませんが、ご助言いただけると幸いです。  
よろしくお願いいたします。


CC BY-SA 3.0
2018-02-02T14:36:19.723
41417
2018-02-05T01:36:09.727
2018-02-02T15:31:01.110
5288
25221
question
python java c++ visual-studio
自作したクラスの管理方法に関する質問


私の場合、管理は特に何もしていません。  
「以前こんな感じのものを作ったな」と覚えていることもありますが、それでも仕様は覚えていません。

以前に作ったものと同じようなクラスが必要になった時、以前のコードを参考にすることはあっても、そのまま使うことは私はまずありません。

多くの人に使ってもらうようなライブラリを目指すなら、多くの人が使えるようにいろいろな機能があって、いつでも使えるようなものになるのでしょうが、自分で作って自分で使う程度のものなら、「今作りたいプログラムに合ったクラス仕様」の方が良いと思います。

なので、特に管理もせず、ドキュメントも書かず、以前のコードを参考にする程度としています。

以下蛇足です。  
「車輪の再発明」はそれほど悪い/避けるべきことだとは私は思っていません。  
もし「車輪の再発明」という部分が心に引っかかっている、ということであれば、もう少し気楽に再発明されてはいかがでしょうか。


CC BY-SA 3.0
2018-02-02T16:23:58.363
41421
2018-02-02T16:23:58.363
5288
41417
answer


｢皆様ならどうします」アンケートな質問は SO
では好まれないです。現に今の時点で「閉じる」に３票入っていますね。これが「ソースコードの再利用性を上げるテクニックにはどんなものがありますか」だったら良かったのかもしれません。

で、どのレベルの話をしているでしょうか？標準ライブラリにある関数と同じ機能を再実装した？広く知られている効率よいアルゴリズムを再実装した？あなたのプログラム専用の機能を再実装した？

前者２つは可能な限り避けたいです。これは知識と経験で避けられるでしょう。以下、最後の１つであるとして

人間は忘れるものですから「忘れること」自体は当たり前です。で、まったく同じコードを再利用する/できる、という案件も稀です（組み込み系ではコストダウンのため使用するチップが変更になるなど普通の話）。

再利用するのは「仕様」いや、むしろそういう仕様を採用した「根拠」（同じ仕様を採用する根拠にも、仕様変更する根拠にも使える）です。本来そういうのはソースコードに書くのではなくて仕様書ないしはノウハウ書に書くべきもの。ですがプログラマは仕様書よりソースコードを読みたがるものなので、あえてソースコード上にそこまで書いておくのもありです。「再利用しやすくするテクニック」というなら

  * ソースコードはきっちりソースコード管理ツールで管理する
  * 仕様に関するキーワードを残しておく (grep しやすい形で。 SO のタグ的なものが良い）
  * 最初にコード書く際に「仕様がきっちり検索できる」ようコメント書いておく
  * そういう仕様にした根拠、判断理由なども別ドキュメントやコメントの形で残しておく

仕様は再利用してもソースコード自体は再利用しないことも多々あります。そんな場合にソースコードを書き直すことは「車輪の再発明」ではなくて「車輪の再実装」だったりします（本当に発明レベルでイノベーションすることはきわめてまれ）リファクタリングなんてのはまさに同一機能の再実装だったりしますし・・・

自分の技量を向上させるためにも以前のものより良い「コードを書く」ないし「仕様を決める」のは無駄ではないです。まあそのためには以前のコードや仕様を見つけることができなきゃ話になりません。上記はそのための工夫。んで、より洗練された高速で小さいコードが書けるようになればよいです。ためらわずに新しいコードを書きましょう。


CC BY-SA 3.0
2018-02-05T01:36:09.727
41471
2018-02-05T01:36:09.727
8589
41417
answer