3

私のスタジオには、10 年以上にわたって開発された大規模なコードベースがあります。私たちが始めたコーディング標準は、社内の少数の開発者によって開発されたものであり、C++ に関連するあらゆる種類の標準について心配する必要が生じるずっと前に作成されました。

最近、社内で小規模な研究開発プロジェクトを開始し、コーディング規約を環境により適したものに更新しました。R&D 作業は、既存のプロジェクト コードに統合される予定です。私たちが直面している大きな問題の 1 つは、2 つの作業領域に対して 2 つの標準があり、コード ベースが交差することです。スタジオで 2 つの基準を使いたいわけではありません。(どのようにしてこの状況に陥ったかは重要ではありません。ただ、私たちがそうならないことを望んでいたというだけです。)

問題は、既存のコードのリファクタリングです。私は、2 つのコード ベース (1 つは比較的小さいもの、もう 1 つは非常に大きいもの) の外観が異なることにあまり熱心ではありません。既存のコードベースの 1 つをリファクタリングして、他の標準に準拠させることに興味があります。問題は、コードベースが小さいほど(IMO)より望ましい標準であるということです。

大規模なリファクタリングを実行できるツールを探し始めました。コードを並べ替えたり締めたりすることには興味がありません。私は次のようなものを変えることに興味があります

class my_class {}
....
class my_class A;

class MyClass {}
....
class MyClass A;

基本的に関数/変数レベルの名前変更を行っています。Visual Assist のようなものは時間がかかるため、使用したくありません。数十万行のコードを含む 10000 以上のソース/ヘッダー ファイルがあります。一度に 1 つのクラスで VA を使用すると、時間の無駄になり、努力する価値はありません。

SOに関する別の投稿でVeraに出くわしました。それは仕事をし、うまくやるかもしれないようです。私がいる状況で Vera を使用した特定の経験があるかどうか、または仕事を成し遂げる可能性のあるツールに関する他の推奨事項があるかどうかを知りたいです。このツールが実際にコード構造を理解していることが重要だと思います。これにより、慎重に行わないと微妙なバグにつながるため、検索/置換の方法で変数の名前を変更するだけにならないようにすることができます。

編集: 私の例では、名前の間で _ を使用することからキャメルケース型の表記法に移行することを示していますが、別の方法で移動する方が有益かもしれません。大規模な名前変更に役立つ一般的なソリューションを本当に探しています。

ありがとう。

4

6 に答える 6

9

私のプロセスは、誰かが特定のモジュールに触れるたびに名前を変更することです。最終的には、すべてのモジュールがリファクタリングされますが、インクリメンタルアプローチでは、コードの破損が少なくなります(テストの完全なセットがあると仮定します。;))

于 2008-10-15T23:26:35.380 に答える
2

カスタムスクリプトを使用して、このような変更を加えました。可能であれば、sedを使用します。それ以外の場合は、正規表現を適切にサポートするスクリプト言語を使用します。これは間違いなくバグをもたらす大雑把なハックですが、より良い解決策を見つけない限り、それは前進の道です。

于 2008-10-15T23:26:49.890 に答える
2

(1) 信頼性の高い自動化されたテストのかなり完全なセットと (2) C++ のセマンティクスを理解するリファクタリング ツール (そのようなツールは聞いたことがありません) がない限り、自動化された名前変更を行うことはお勧めしません。私が働いていた場所では常に、その時点で作業しているモジュールのみをリファクタリングするという慣習がありました。時間はかかりますが、比較的痛みの少ないプロセスです。

于 2008-10-16T08:28:52.573 に答える
0

変数の名前を変更するのは難しいと思います - 幸いなことに、_ 慣習から Capitalized に移行するので、それほど難しくはありません (ただし、_ の方が読みやすく、優れています)。

私はコードの美化 ( Artistic StyleUncrustify など) を取り、それらを変更して変換を行います。この変換に必要なカスタム ルールはごくわずかなので、それほど難しくはありません。

于 2008-10-15T22:54:51.653 に答える
0

リファクタリングなどのソース コード変換を含む、大部分が自動化された C++ ソース コード分析を行うために、Mozilla 関係者によって使用、作成、および維持されている" poke "を調べることを検討することをお勧めします。JavaScript を使用してスクリプト化可能であり、かなり複雑なセマンティック分析と変換をサポートしています。そのため、シンボルの名前を変更することは、ポークにとって最も簡単なことの 1 つです。

GCC プラグインが登場したので、将来的にはそのようなことが容易になる可能性があります。

于 2009-05-18T04:27:03.860 に答える
0

IMHO、変数の名前変更は、努力する価値がありません。重要なことは、コードが堅牢で、読みやすく、パフォーマンスが高いことです。以前に使用されていたスタイルを採用し、重要なことに時間を費やしてください。

于 2008-10-16T01:29:04.853 に答える