0

最近、コーディング スタイルに関してちょっとした興味深い問題に遭遇しました。一貫性は優れたコード スタイルの重要な属性であることに気づき、いくつかの興味深いスタイル パターンを持つコードを継承しました。

問題のコードは、基本的に 2 つのライブラリを結び付けます。プログラム自体はそれほど大きくありません。最初のライブラリをラップするユーティリティ関数のコードは、.h ファイルと .c ファイルにあり、合計で 100 行 (両方のファイル) になります。2 番目のライブラリとやり取りするコードは、メインも含む .c ファイルにあります (この唯一の .c ファイルで合計 300 行)。2 番目のライブラリで作成されたすべての関数は、特定の実装に合わせてカスタマイズされているため、静的になります。

私が抱えている問題は、各ファイルに独自のスタイルがあることです。問題のプログラマは独自のスタイルを持っていますが、最初のファイル セットは最初のライブラリのスタイルに従います。2 番目のファイルは、2 番目のライブラリのスタイルを使用します。その結果、各ファイル内のコードは、スタイルに関して局所的に一貫していますが、プログラム自体は複数のコード スタイルにまたがっています。

スタイルの違いには、2 番目のファイルで GLib 型と g_printf() などの関数を使用し、最初のファイル セットで C 型と関数を使用することが含まれます。2 番目のファイル (GLib を使用するライブラリとのインターフェース) には、絶対に GLib を使用する必要がある部分と、そうでない部分があります。ただし、ローカルの一貫性を維持するために、プログラマはファイル全体で GLib を使用しました。

その結果、コード スタイルに関して、この場合のベスト プラクティスは何なのか疑問に思っています。考えられるオプションを以下に示します。

  1. 最初のファイル セットで最初のライブラリのスタイルを使用し、2 番目のファイル セットで 2 番目のライブラリのスタイルを使用します。これにより、ライブラリのコードをスタイルに関して一致させることができ、ファイルの各セットをローカルでスタイルに関して 100% 一貫させることができますが、プロジェクト全体では一貫していません。

  2. 2 つのライブラリのスタイルを無視して、独自のスタイルでコードを記述します。GLib 呼び出しは、絶対に必要な場所に限定されます。標準 C ライブラリは他の場所で利用されます。これにより、コードは、各ファイルと関連するライブラリ呼び出しの間でローカルにスタイルが一致しなくなります。ただし、ファイルからファイルへのコードはある程度一貫しているように見えるはずです。

  3. ライブラリのスタイルを 1 つ選んでください。これにより、プロジェクトのコードの一貫性が保たれるはずですが、このプロジェクトからプログラマーの他のプロジェクトへのコードは一貫性がなくなります。また、他のライブラリのスタイルに従わなければならないソース コード ファイルは、少し見栄えが悪いかもしれません。

これについての考えを聞くのを楽しみにしています。同じプログラマーであるプロジェクトのコードから別のスタイルに移行するプロジェクトに遭遇したのはこれが初めてだと思います。ご意見とご感想をお寄せいただきありがとうございます。

4

2 に答える 2

1
  • 私の意見では、あなたの会社のコーディングスタイルを使用してください(あなたが会社のためにコーディングしている場合)。将来的には他の多くの人に役立ちます.
  • 2 つの異なるスタイルがある場合は、そこにあるコーディング スタイルを維持します。
  • 必要に応じて、ライブラリ ファイルのコーディング スタイルを変更します。
于 2013-07-26T08:10:57.830 に答える
1

2 つの異なる問題が発生します。

  • コーディング スタイル
  • glib への依存

コーディング スタイルに関しては、プロジェクト全体で統一する必要があります。好みのコーディング スタイルとルールを選択します (最初のファイルから、2 番目のファイルから、または任意の 1 つから)。ただし、プロジェクト全体で一貫性を持たせてください。もちろん、それには多少の努力が必要ですが、将来的には報われます。

将来このライブラリを切り替えられるように、glib への依存関係は可能な限り分離する必要があります。C++ では通常、抽象クラスへの依存関係を作成し、それを具象クラス (「実装 (具象クラス) ではなく、インターフェイス (つまり、抽象クラス) へのプログラム」) に継承します。 C であり、クラスがない場合は、コードを切り離してこの動作を模倣してみてください。

于 2013-07-26T07:37:19.633 に答える