C++やPythonなどで、自分が使いやすいようにクラス化しているのですが、
時間がたつと、どんなものを作ったのか忘れてしまい、車輪の再発明をしてしまいます。
皆さまは、自作したクラスや関数などをどのように管理されているでしょうか?
漠然とした質問で大変申し訳ありませんが、ご助言いただけると幸いです。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
ベストアンサー
基本的なアルゴリズムであれば、よいライブラリがあるので、それを使います。
よいライブラリがない言語は使わないことにしています。
そうでないものについては、うまいベストプラクティスがないケースなので、
その都度書き直してたりします。
数ヶ月後にコードを忘れていることもありますが、
別のよい書き方を思いついていたりするので、
書き直したほうがより簡潔で速度も早いコードになってたりします。
そして数カ月後に更に…
最近だと数カ月後にライブラリのバージョンアップに伴って互換性もなくなるので…
あまりクラスをカスタマイズしない方がよい気がします。
特定の問題が簡単に扱えるようにカスタマイズするとその分汎用性は落ちますので。
ライブラリの実装がどうしても気に入らなく、より優れた実装があると信じているのなら、
オープンソースの場合直接コミュニティに参加してコミットするとよいと思われます。
大規模なプログラムを設計する際はもっとがんばりますが、
全体の設計は固定しても、個々の実装は変更が容易なはずです。
というよりそのようにがんばって設計します。
投稿2018/02/02 14:49
編集2018/02/02 14:50総合スコア8560
0
こんにちは。
時間がたつと、どんなものを作ったのか忘れてしまい、車輪の再発明をしてしまいます。
同じものを再度作ること結構ありそうです。ですが、そもそも同じものを作ったのかどうかよく分からんです。以前に作ったことを綺麗に忘れてますから。
結局、覚えているものだけを使いまわしてます。忘れたらそれで終わりです。リストを作るなどしての管理はしていません。プロジェクト単位ではソースが事実上の管理リストになりますが、全く無関係なプロジェクト間で共有するためのリストは作っていないという意味です。
プログラミング言語も進歩してますし、自分自身も進歩してますから、昔作ったプログラムをそのまま使いまわすケースって結構少ないですし。
投稿2018/02/02 16:11
総合スコア23272
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/04 14:30
2018/02/06 11:59
2018/02/06 12:03
0
- 少なくともdoxygen/JSDoc互換スタイルのコメントを付ける
- コメントと合わせてみてぱっと何をしているかわからないような疎結合になっていないクラス/関数を作らない
- 標準ライブラリの作法になるべく合わせる
- 標準ライブラリの今後の動向を把握し、それに沿う関数/クラスを作る
- そもそも自分で書かない、すでにあるライブラリを使う
- テストを書く
追記
- 標準ライブラリのクラス/関数群をよく知る(普段使ってないもので有用なものはきっとたくさんある)
- デファクトスタンダードとなっているライブラリがあればそれもよく知る(C++ならboostとかEigenとかとか)
友人曰く
- githubなどに上げて公開する
- ブログに紹介記事を書くようにする
- パッケージ管理がある言語ならそれに公開する
- サンプルを書く
さらに追記
gitでソースコードを管理してかつコミットは粒度を細かくしておいてかつコミットメッセージをWHYがわかるように書くと、git blameをみて「なんでこんな実装にしたんだっけ」というのがわかって良さそう。他人が書いたコードを見るときにもgit blameはそれなりに見ているのでコミットが適切にされていないとすごく困る。
投稿2018/02/02 14:15
編集2018/02/04 15:02総合スコア5852
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/02 14:53
2018/02/02 15:33
2018/02/04 14:13
0
車輪を作り直すと、昔より完成度の高い車輪になりますよ。何度も作り直しましょう。もし車輪を何度も作り直すのは面倒臭い!というマインドだったら、エンジニアには向いていないかもしれません。
投稿2018/02/06 01:49
総合スコア108
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
機能の内容や目的等に関してはソースのコメントに書いてあると思いますので、新しくモジュールを作る際に記憶の片隅にひっかかったらgrepして似たような物がないか探すぐらいですね。
完全に忘れてたらそれまでです。
投稿2018/02/03 03:30
総合スコア1430
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/04 14:11
2018/02/05 01:23
2018/02/06 12:01