6

クラスメンバーを並べ替える最良の方法は何ですか?

私はこれについてチームメンバーと対立しています。彼は、メンバーをアルファベット順に並べ替えるべきだと提案しています。重要な属性を最初に、関連するメソッドをまとめるなど、セマンティックな方法で整理する方が良いと思います。

どう思いますか?

4

10 に答える 10

11

私はセマンティックが好きです。メンバーを探しているとき、それが何と呼ばれているかを正確に知ることはめったにないからです. また、何らかの命名規則 (ハンガリー語など) を使用している場合、アルファベット順ではタイプごとにグループ化されますが、これは望ましくない場合があります。

于 2008-10-11T20:08:49.387 に答える
3

関連するクラス メンバーをまとめてグループ化します。これにより、他のプログラマーが初めてあなたのインターフェースを見たときに、より簡単にインターフェースを理解できるようになると思います。

アクセサーと修飾子を別々のセクションにまとめて整理すると便利な場合もあります。

于 2008-10-11T20:10:57.383 に答える
2

私は修士論文の一部として、まさにこの問題を研究しました。

特定のものを見つけることができるという点では、アルファベット順の組織またはパブリック/プライベートに基づく組織の方が優れています。ただし、一部の IDE では、アウトライン ツールを設定して、アルファベット順に並べ替えたり、公開/非公開の特別なインジケーターを使用したりできます。

私のアプローチは、メソッドが使用するメンバーに基づいてメソッドをグループ化することでした。多くの場合、同じフィールドを使用するメソッド間に概念的なつながりがあります。

私は実際にそこからビジュアライゼーションを作成しました。これは、巨大なクラスの構造をすばやくナビゲートして理解するのに役立ちました。

于 2008-10-11T20:17:16.373 に答える
1

コードを調べてメンバーを探すことはありません。メンバー定義にジャンプしたいときは、ナビゲーション バー/ドキュメント アウトライン/クラス ビューから選択するか、右クリックして [定義にジャンプ] を選択します。適切な IDE がある場合は、メンバーを並べ替える必要はありません。これは、Visual Studio と、必要に応じて使用する他の IDE、KDevelop で非常にうまく機能し、少なくともこの基本をサポートしています。

とにかく、私はメンバーを機能別にグループ化する傾向があります。つまり、特定の機能の一部であるすべてのフィールド/プロパティ/メソッドがまとめられています。授業は長すぎてはいけないので、これで十分です。

于 2008-10-11T20:23:26.203 に答える
1

これは単なる私の意見であり、人気がないと確信していますが、セマンティック ソートの問題は主観的なものです。どの方法を互いに近づけるべきかについては、人それぞれ異なる意見があります。

アルファベット順には、完全に客観的であるという利点があります。また、小さな変更に対する大きな差分も削減されます。これは、あるコーダーが別のセマンティック順序を選択した場合に一般的です。

ほとんどの IDE には、ナビゲーションを容易にするためのアウトラインまたはハイパーリンクがあります。

編集: 明確化-私はまだパブリックからプライベートにソートしますが、同じアクセスレベル内でアルファベット順にソートします。実際、私は並べ替えを行いません。保存するときに、IDE にファイルを再分類させます。

于 2008-10-11T20:19:42.733 に答える
0

より高いレベルでは、次のようにクラスを編成します。

  1. コンストラクタ
  2. デストラクタ
  3. プライベートフィールド
  4. プロパティ
  5. メソッド/機能

次に、メソッド/関数については、機能ごとにもう一度分類します。たとえば、インターフェイスを実装するメソッドを1つのリージョンに配置したり、イベントハンドラーメソッドを1つのリージョンに配置したりします。

RWendi

于 2008-10-26T08:39:15.270 に答える
0

私はアルファベット順のリストを好む奇妙なケースの1つだと思います。

何よりもまず、メソッドを「意味的に」グループ化することは時間の浪費になる傾向があるというのが私の経験です。さて、スコープ/可視性によってそれらをグループ化することについて話している場合、それは別のことです。ただし、メンバーがスコープを変更した場合は、コードを最新の状態に保つために、メンバーの移動に時間を費やす必要があります。そのようなガイドラインを守るためにコードをシャッフルする時間を無駄にしたくありません。

私も地域の大ファンではありません。プロパティとメソッドがスコープごとにグループ化されている場合、それらはリージョン内の囲い込みを叫ぶ傾向があります。ただし、折りたたみ領域でコードを囲むと、不適切に記述されたコードが隠される傾向があります。あなたがそれを見る必要がない限り、あなたはそれを維持可能にするためにそれをリファクタリングすることを考えることを気にすることはありません。

だから、私はアルファベット順の編成を好みます。それは単純で、直接的で、要点を示しています。グループをリージョンに囲みたくはありません。また、IDEを使用すると、関数やプロパティの定義に簡単にジャンプできるため、コードの物理的なレイアウトは重要ではありません。以前、人々に最初に公のメンバーに焦点を合わせてもらいたいと思っていました。最新のIDEは、スコープベースのレイアウトを支持して、それをほとんど無意味な議論にしています。

しかし、アルファベット順のレイアウトの最大の利点はこれです。コードレビュー中に印刷されたコードサンプルです。そして、私はそれらをたくさん使います。関数やプロパティを簡単に見つけることができます。アルファベット順だけでなく、関数やプロパティを見つけるために多くのコードを調べなければならなかったことがあれば、私が何を話しているのかがわかるでしょう。

しかし、彼らが言うように、それらはこの主題に関する私の主観的な見解です。あなたのマイレージは異なる場合があります。

于 2009-07-20T03:25:37.790 に答える
0

電話帳を書いていますか?

セマンティック アプローチを使用すると、最も重要なメソッドを簡単に示すことができます。私は通常、コンストラクタ、デストラクタを最初に使用し、次に重要なメソッドにゲッターとセッター、そして最後にその他のメソッドを使用します。メソッド。最後に、内部パーツ (プライベート メソッド、属性など) についても同様のアプローチをとります。

アルファベット順は、クラスに関する有益な情報を伝えません。メソッドをアルファベット順に並べ替えたい場合は、IDE の機能に頼る必要があります。

于 2008-10-11T21:15:03.637 に答える
0

IDE で「メソッド表示」をソートすることにより、セマンティックからアルファベットに移動できます。

アルファベット順からセマンティックに (自動的に) 移行することはできません。

したがって、セマンティック。

于 2008-10-11T21:56:50.120 に答える
0

最新の IDE を使用していると仮定すると、マウスを 2 回クリックするだけで必要なメソッドを見つけることができるため、メソッドを整理する特定の方法を使用することで何が得られるかはわかりません。私は stylecop ( http://code.msdn.microsoft.com/sourceanalysis ) を使用していますが、これは public / private / method / properties で注文しています。

これが重要だと本当に思ったのは、非常に大きな jscript プログラムを書いたときだけで、当時のエディターは関数を見つけるのに何の助けも提供してくれませんでした。アルファベット順の編成はとても役に立ちました。アルファベット順にすると、メソッドを見つけるためにファイル内のどの方向に移動する必要があるかを理解するのは難しくありません。セマンティックな組織化はまったく役に立たなかったでしょう。

于 2008-10-26T07:34:23.153 に答える