考慮すべき重要な点は、コードをリファクタリングする理由です。その質問に答えれば、答えの半分はすでに得られています。
リファクタリングの非常に一般的な理由である、保守性を向上させたいとおっしゃいました。それを目標として、私が具体的に目標とするいくつかのことを以下に示します。
1) 重複するコードを削除します。とにかく、ほとんどのプログラマーはこれを回避しようとしますが、大規模なプロジェクト (特に大規模なチームを持つプロジェクト) では、いずれにしても蓄積する傾向があります。これは、リファクタリングの簡単なターゲットです。
2) シンプルさを目標にします。各関数/メソッド/クラスは明確に定義されていますか? それを見て、それが何をしているのか正確に理解できますか? そうでない場合は、リファクタリングの対象として適しています。良い例は、多くのことを行う (または多くの副作用を持つ) モジュールです。それらを論理的にグループ化された機能の小さなモジュールに分割することを検討してください。
3) 変数/クラス/関数名。それらは明確ですか?必ずしも長くする必要はありませんが、変数が何のためにあるのか、関数が何をするのかを正確にあなた(またはコードを保守している人) に明確に示す必要があります。不明な点がある場合は、名前を変更することを検討してください。
4) 呼び出されないコードはありますか? 後で使うと思うならやめたほうがいいかもしれません。そうでなければ、それはメンテナーにとってただのニシンです。それを取り除くことを検討する価値があります。
5) パフォーマンスの向上。アルゴリズムを完全に書き直す時間がある場合とない場合があります (最高のパフォーマンス向上)。ただし、これは簡単なことを確認する良い機会です。C++ の例として、クラスを const 参照または値渡しとして渡していますか? 前者は、それを回避できる場合 (95% の確率で) はるかに効率的です。
リファクタリング頑張ってください!
[編集] また、コードが正しいままであることを確認するために、リファクタリングの前に単体テストを作成することをお勧めします。