◀ANSI版開発トップへ
  • 2237 クラス、インターフェイスの整理
    • 2238 Re: クラス、インターフェイスの整理
      • 2239 Re2: クラス、インターフェイスの整理
        • 2240 Re3: クラス、インターフェイスの整理
  • [2237] クラス、インターフェイスの整理 ボロぞうきん 2002年07月03日 12:22

    はじめまして。

    自分用にいじるときにいくつかの点で気になるところがあったので、
    リファクタリングなんぞをやってみようかと思っているのですが、
    どうでしょうか。余計なお世話ですか?

    現在候補として挙げているところは以下の4点です。
    1 CMemoryから文字コード変換等のキャラクタセット依存コードを分離
    2 constの徹底
    3 不要コメントとコメントアウトされたコードの除去
    4 2重管理しているデータの参照化

    1&2 1行の文字数が3万文字を超えてくると極端に遅くなるので、
    行バッファを簡易gapped buffer方式に変更したかったけど、
    内部のポインタを書き換え目的に使っている場所があり、
    単純にconst化出来なかった。

    4 コレが生んでいるバグが一つ見つかった。
    • [2238] Re: クラス、インターフェイスの整理 げんた 2002年07月03日 12:51

      >リファクタリングなんぞをやってみようかと思っているのですが、
      >どうでしょうか。余計なお世話ですか?
      お願いします.
      • [2239] Re2: クラス、インターフェイスの整理 ボロぞうきん 2002年07月03日 13:02

        返事どうもです。
        で、いくつか質問があります。

        個人でいじっている分には好きなようにやれば良いんですが、
        それだと構造に少し変更が入るので、
        バージョンUPごとに追従するのが面倒でやる意味がありません。
        納得いけば取り込んでもらえるのでしょうか?

        3のコメントアウトされた死亡コードの除去についてですが、
        意図して残してある物なのでしょうか?
        勝手に取り除いちゃまずい物なのか判断しかねます

        作業はどのバージョンのソースをベースに行えばいいですか?
        • [2240] Re3: クラス、インターフェイスの整理 げんた 2002年07月03日 20:47

          >個人でいじっている分には好きなようにやれば良いんですが、
          >それだと構造に少し変更が入るので、
          >バージョンUPごとに追従するのが面倒でやる意味がありません。
          >納得いけば取り込んでもらえるのでしょうか?
          クラス内部だけなら局所的なので特に問題は無いのですが,クラスの組み替えやインターフェースの変更を伴ってかつ作業が長期に渡ると,その間に他の人から送ってもらった変更が適用できなくなってしまう危険性があります.

          一応別のブランチで作業するという方法もありますけど,あまりに広範囲だと結局最後は手でマージすることになってしまいますし.

          長期に渡るようであれば問題の起こらない部分を作業途中でもUPしてもらって,少しずつ取り込んでいった方がいいかもしれません.

          コメントの削除,やconstの徹底は少しずつマージすることも可能かと思います.
          constの方は,呼び出し側を先にconstにした後で宣言にconstを付けるというように外側からやれば行けそうです.

          インターフェースが変わるところは,新しいインターフェースを作って全てそちらを使うように変更した後で古い方を削除するという順番で何とかなりますかね.

          すぐ終わるようならあまり心配しなくてもいいと思いますけど.

          >3のコメントアウトされた死亡コードの除去についてですが、
          >意図して残してある物なのでしょうか?
          >勝手に取り除いちゃまずい物なのか判断しかねます
          なんか,コメントアウトして残す人が多いようですけど一応過去の物はCVSで取り出せるようになっていますので,コメントアウトされたコードや #if 0~#endifは削除してしまった方が良いと思います.

          ただ,いろいろと試行錯誤した結果そのような実装になったというところは,同じ間違いを繰り返さないようコードではなく文章で残しておくのが良いと思います.

          >作業はどのバージョンのソースをベースに行えばいいですか?
          最新版からでお願いします.(特にブランチはないので,古いところから作業を始める意味はないと思います).CVSリポジトリが必要であればリポジトリを最新の物に更新します.今のは6月末までしか入っていませんので.