膨らみすぎて手が付けられないコードの管理方針を考えてみた

皆様,こんにちは.
もう今年の残りが一年の24分の1程度しかないことに先ほど気づいたところであります.


年末と言えば,大掃除.
私は片付けが苦手すぎて服とか本とか捨てられずに困っているのですが,パソコンの中も同じです.
3年近く同じ環境で引き継ぎもなくコードを書き溜めていたので,収拾がつかなくなってきました.


これはまずい.
いろいろ苦労しながら書いたコードも,どこにあるか探せなくなってしまっては宝の持ち腐れです.


というわけでこれからコードをまともに管理できるようにするために,
現状分析と指針を箇条書きでまとめてみました.
「もっといい方法があるのに」とか「こういう管理方法があるよ」とか,
「それはないわーww」でもいいので突っ込みお待ちしております.


======

何の為にコード管理をするのか?

  • 効率の良い開発のため
    • 新規の処理の追加
    • バグ取り
  • 効率の良い引き継ぎのため
    • 機能単位の把握
    • 必要なファイルだけ着目できる(不要な/非本質的なコードの除外/不可視化)
  • 効率の良いバックアップのため
    • 変更履歴の追跡
    • 漏れのないバックアップ

現状はどうしているのか?

どのような問題があるのか?

  • 古いコードが多すぎて,どれが使えるのかよくわからない
  • Gitの管理単位が大きすぎて(Codeディレクトリすべて)変更を追いにくい
  • ファイル名は確実にユニークだが機能ベースでの検索に向いていない

解決方策

  1. プロジェクト単位でディレクトリを分ける
    • プロジェクトの中だけパスを通せばいいようにする
      • 逆に他のプロジェクトと相互依存しないようにする
      • 関係のないプロジェクトはパスから外す
      • 違うプロジェクトと同じ名前の関数があってもぶつからなくなる
      • 同じ機能の改良版なども比較的容易に作れるし扱える
    • 何をしているのかわかりやすい
      • ドキュメントもプロジェクト単位で作成すればよい
  2. Gitをもっと使いこなす
    • 卒論サーバーにでもリポジトリを作る
      • 本体が壊れても大丈夫
    • プロジェクト単位でGitのリポジトリを作成
      • 同名ファイルの重複が避けられる
  3. ファイル名のルールを変更する
    • 機能だけちゃんとあらわしている名前を付ける
      • ファイル名の一意性が必要ない
    • プリフィクスなどもつけない(関数に"f"など)
      • 基本的に関数ベースにする
  4. 開発方針の変更
    • 機能単位の分割(カプセル化)
      • 本文の長いコードは読みにくい
      • できるだけこまめに分割し,コメントだけでなく名前で機能を語らせる
      • 基本的に関数ベースにする,テスト以外はスクリプトを使わない