問題タブ [code-structure]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - クラス内の項目の順序: フィールド、プロパティ、コンストラクタ、メソッド
クラス構造に関する項目の順序に関する公式の C# ガイドラインはありますか?
うまくいきますか:
- パブリック フィールド
- プライベート フィールド
- プロパティ
- コンストラクター
- メソッド
?
アイテムの順序について厳格なルールがあるかどうか気になりますか? 私はどこにでもいるようなものです。どこでもできるように、特定の基準に固執したい.
本当の問題は、私のより複雑なプロパティがメソッドのように見えてしまい、コンストラクターの前の上部で場違いに感じられることです。
ヒント/提案はありますか?
api - ソフトウェアの API の作成 - 基本的なコード構造
私は現在、API を介してクライアント デスクトップでも使用される Web ソフトウェアを作成しています。私が今直面している問題は次のとおりです。アプリケーションでオブジェクトを追加/更新/削除するすべてのアクションを2回実装する必要がありますか? 1 回は通常のコードに配置され、1 回は API 用に分離されますか?
それとも、データベース内のすべてのオブジェクトを表す OOP モデル クラスのシステムを使用し、それらを API と通常のコードの両方に使用する必要がありますか?
または、直接 API を開発して、通常の Web インターフェイスからも使用できますか?
これは私がずっと疑問に思っていたことです。前もって感謝します!
c - 一部の関数が非常に長いのはなぜですか? (学術研究に必要なアイデア!)
私は非常に長い関数に関する小さな学術研究プロジェクトを書いています。明らかに、私は悪いプログラミングの例を探しているのではなく、100、200、および 600 行の長さの関数の例を探しています。
ヘブライ大学で修士号取得のために書かれたスクリプトを使用して、Linux カーネル ソースを調査します。このスクリプトは、コードの行数、関数の複雑さ(MCC で測定) などのさまざまなパラメーターを測定します。ところで、コード解析についてのきちんとした研究であり、推奨される読み物です。
関数が非常に長くなければならない正当な理由を考えることができるかどうか興味がありますか? 私は C を調べますが、どの言語からの例や引数も非常に役に立ちます。
coding-style - 短絡コードを使用する理由
関連する質問:短絡評価を使用する利点、言語が短絡評価を使用しないのはなぜですか? 、誰かがこのコード行を説明できますか? (論理演算子と代入演算子)
短絡コードを使用する言語の利点について質問がありますが、プログラマーにとっての利点は何ですか? コードをもう少し簡潔にすることができるというだけですか? それともパフォーマンス上の理由がありますか?
とにかく 2 つのエンティティを評価する必要がある状況については質問していません。たとえば、次のようになります。
私には、そこにある理由は明らかです。両方が真である必要があるため、ユーザーがデータを保存できない場合は、よりコストのかかるモデル検証をスキップできます。
これには(私にとって)明らかな目的もあります。
strlen()
文字列以外の値で呼び出すのは賢明ではないためです。
私が疑問に思っているのは、他のステートメントに影響を与えない場合の短絡コードの使用です。たとえば、Zend アプリケーションのデフォルトのインデックス ページから:
これは次の可能性があります。
または、単一のステートメントとしても:
では、なぜ短絡コードを使用するのでしょうか。制御構造の代わりに論理演算子を使用するという「かっこよさ」のためだけに?ネストされた if ステートメントを統合するには? 速いから?
php - XmlWriterオブジェクトを組み合わせる?
私のアプリケーションの構造では、各コンポーネントがXMLとして出力を生成し、XmlWriterオブジェクトを返します。最終出力をページにレンダリングする前に、すべてのXMLを結合し、そのオブジェクトに対してXSL変換を実行します。以下は、アプリケーション構造の簡略化されたコードサンプルです。
このようにXmlWriterオブジェクトを組み合わせるのは理にかなっていますか?アプリケーションを構造化するためのより良い方法はありますか?最適なソリューションは、単一のXmlWriterインスタンスをパラメーターとして各コンポーネントに渡す必要がないソリューションです。
更新:
XmlWriterを完全に放棄し、代わりにDomDocumentを使用する場合があります。それはより柔軟性があり、パフォーマンスも優れているように見えました(少なくとも私が作成した大まかなテストでは)。
c# - Gotoを使用してDRYの原則とコードの明確さを強化する:良い考えですか?
次のような構造のコードがあります。
コードのコピーを嫌うので、これはgotoの数少ない便利なアプリケーションの1つですか、それとも使用できるより良い構造がありますか?
c# - APIに依存しない頂点処理に適したコード構造は何ですか?
現在、C# を使用して 3D メディア エンジンに取り組んでいますが、ちょっとした難問に遭遇しました。レンディング ループを把握し、優れたプラグイン アーキテクチャとコンテンツ管理システム、さらにはマテリアル パイプラインをすべて計画しました。エンジンは、両方の API のプログラム可能なパイプラインと共に、DirectX と OpenGL (「レンダラー」プラグイン経由) を使用する予定です。
とにかく、今週の初めに、私は頂点を処理するためのエンジンの抽象レイヤーに取り組み始めました (私はこれを何週間も恐れていました)。また、ご存じの方もいらっしゃると思いますが、グラフィック API 間の頂点処理はまったく関連していないか、同じではありません。ちょっと関連しています;)が、同じではありません。OpenGL では、頂点の処理は非常に簡単です。カスタムの頂点構造を作成し、それを GPU に送信してから、シェーダーに残りを処理させます。これは、柔軟なグラフィック パイプラインに最適です。OpenGL は、各頂点に含まれる要素を認識する必要はありません。一方、DirectX では、頂点構造ごとに宣言を作成し、それを GPU に送信する必要があります。
問題は、渡される頂点構造のタイプがわからないことです。また、列挙といくつかの抽象 'VertexDeclaration' クラスを介して頂点の各要素を宣言することを含む抽象化レイヤーを作成することは絶対に避けたいと思います。これにより、いくつかの問題が発生します。
1) 頂点要素を取得するのは、控えめに言っても面倒です。「VertexSemantic」を使用して頂点「a - z」の位置を求めることもできますが、スケルトン アニメーションなどで多数の頂点を処理する場合、多くのオーバーヘッドが発生する可能性があります。
2)エンジンの主な焦点が「初心者」であることを考えると、あまりユーザーフレンドリーではありません。ユーザーが大量のオブジェクトを宣言して貴重な開発時間を費やすことなく、カスタムの頂点とメッシュ バッファーを作成できるようにしたいと考えています。
3) もっと?
これで、属性を使って何らかの処理を行ってから、DirectX レンダラー内で頂点構造の宣言を作成できるようになりました。たとえば、いくつかの列挙型を作成します。
これで、ユーザーが頂点構造の各要素の「フィールド」に適用できる属性を作成できます。
カスタム頂点構造がどのように見えるかの例:
これはいいでしょう。DirectX プラグイン (レンダラー) では、各構造型のセマンティクスを作成できるユーティリティ クラスを作成し、データをキャッシュするだけで、頂点ごとに宣言を再作成する必要がなくなります。
NONE 列挙値を ELementUsage に追加して、カスタム値を何にでも使用できるようにすることもできます...しかし、DirectX では各頂点をマークする必要があるため、OpenGL でのみ機能します...ない。
私の質問:
これを行うためのより良い方法はありますか (属性を使用する以外に)? DirectX で VertexDeclarations を使用しないようにする方法はありますか? 「私の」質問でわからないことはありますか?
編集:
属性を使用する際の問題は、各頂点から要素データを取得することです。メッシュ バッファー内の各頂点の位置を取得したいとします。属性を使用したため、「vertex.Position」だけでは実行できません。「Utility.GetElement(vertex, ElementUsage.POSITION)」のように、頂点構造からフィールド参照を抽出できるユーティリティ メソッドを作成する必要があります。 . このメソッドは、最初にリフレクションを使用して属性を見つけ、次にフィールド値への参照を返す必要があります。値を設定することさえ(私は思う)不可能でしょうか?
もう 1 つの方法は、IElement インターフェイスを作成し、各要素 (Positon、Normal など) を実装することです。インターフェイスには、継承された要素構造内で直接返すことができる Name プロパティを含めることができます。これは、PositionElements の Name プロパティが単に「Positon」を返すようにするためです。
次に、AddElement(IElement)、GetElement(string name)、GetElement(int index)、Insert、Replace などのメソッドを含む Vertex 構造体内に IElement の配列を保持できます。DirectX で認識されるすべての要素を実装して、レンダラー プラグインは、頂点構造を解析して頂点宣言の配列を作成できます。
これに関する問題は、配列 '[]' を頂点要素データとして使用できるかどうかわからないことです。同様に、頂点構造体 (IElement 配列を含む) を DirectX に直接渡し、次に GPU に渡すのを妨げる、配列に含まれる他のバイト (存在する場合) は何ですか?
このように実装することは、私が必要としているものに完全に最適です。もう 1 つの質問は、IElement (要素) の継承型がクラスになる可能性があるか、それとも要素値が値型でなければならないかということです。
python - Python ソース コード ファイルを整理するには?
Models.py
ソース コード ファイルの内容をモデルごとに個別のファイルに分割したい Python App Engine アプリを開発していますが、すべてを Models というフォルダーに入れたいと考えています。問題は、それを行うと、アプリがクラスを見つけられなくなることです。私は何をすべきか?
この質問は MVC に関するものではありませんが、同じタイトルの別の質問は.
c++ - win32を使用してC++コードを構造化するためのヒントはありますか?
コードをより構造化して読みやすくすることで、コーディングスキルを向上させようとしています。GUIをコーディングします(編集に感謝します)。Firefoxのオープンソースコードを読んで改善しましたが、GTK +を使用しており、Win32はあまり使用していません。
Win32でコーディングされたオープンソース(プロフェッショナル)プログラムはどこにありますか?
もう1つ:擬似コードをいつ書くべきですか?私はこれまでこれを行ったことがありませんが、エッセイの概要を説明するようなものだと思います。プロジェクトをコーディングする前に、擬似コードを作成する必要がありますか?または単に機能しますか?
ありがとう
oop - 「設定」クラスはどのパッケージに配置する必要がありますか?
私はアプリケーションを構築している最中ですが、プロジェクトの構造を念頭に置いていないと、簡単に新しいパッケージを作成してしまうことに気付きました。
今、私は最初に紙の上でプロジェクト構造全体をやり直そうとしています。プロジェクトの他のいくつかのクラスの設定としてアクセスされる、パブリック プロパティを持つ設定クラスを使用しています。
さて、この設定クラスはプロジェクト全体に適用されるため、パッケージ化する必要があるかどうか、パッケージ化する場合、どのようなパッケージに存在する必要があるかがわかりません。それとも、メイン アプリケーション クラスのルート (既定のパッケージ) に配置する必要がありますか?
utils パッケージに入れることを考えていましたが、実際にはユーティリティではないと思います。たとえば設定クラスのようなパッケージ構造を決定する方法に関する戦略はありますか?