問題タブ [project-organization]
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.
python - Python プロジェクトの編成
私は Python プロジェクトを開始しており、20 以上のクラスが含まれていると予想しています。良い習慣として、それらをそれぞれ別のファイルに入れたいと思います。ただし、プロジェクトディレクトリはすぐにファイルでいっぱいになります(または、これを行うとそうなるでしょう)。
インポートするファイルをフォルダに入れると、インポートできなくなります。別のフォルダーからファイルをインポートする方法は?
前もって感謝します
version-control - すべてのコード、データ、スクリプト、タスクなどを整理するにはどうすればよいですか?
整理された状態を維持するために、「1人のチーム」にどのようなツールまたはアプローチをお勧めしますか?
私は多くのコーディングを含む研究を行っており、何百もの使い捨てのperlスクリプト、より良いアプローチが見つかるまで使用されるC ++バイナリ、さまざまな方法で前処理される大量のデータ、新しい前処理によって古い方法は廃止されました-古い方法の方が実際に優れていることがわかるまで、などです。多くのことを試さなければならないので、私の仕事は本質的に動く目標であり、多くの場合、完璧なものはありません。
完全に混沌とした状況ではありませんが、完璧にはほど遠いです。そのような状況であなたが推奨する一般的なアプローチはありますか?私はSVN
自分のコードに使用していますが、データのバージョンが大きくなりすぎるため、異なるバージョンには使用していません。すべてのスクリプトとバイナリを追跡するのは難しいので、私は常にそれらにコメントし、それらをどのように実行したかなどを書き留めます。しかし、いくつかの追加のアイデアがあるかどうか興味があります。
(私はLinuxシステムで作業しています。)
java - パッケージを整理する (そして依存関係のサイクルを防ぐ) 方法は?
私は自分の Java プロジェクトでいくつかのメトリックを実行してきましたが、どうやらパッケージ間に多くの依存関係の循環があるようです。ものをパッケージにまとめる方法を本当に知らなかったので、自分にとって意味のあることをしただけで、明らかに間違っています。
私のプロジェクトはニューラル ネットワーク フレームワークです。ニューラル ネットワークにはニューロンがあり、これらは Connections で相互に接続されています。彼らはお互いに依存する必要があります。ただし、Neuron にもさまざまな種類があるので、それらをすべて独自の「neurons」パッケージに入れることをお勧めします。明らかに Connection は Neuron ではないため、パッケージに含めるべきではありませんが、相互に参照しているため、循環依存関係があります。
これはほんの一例ですが、このような状況は他にもあります。このような状況にどのように対処しますか?
また、パッケージ階層の上位にあるパッケージのクラスは、より深いパッケージのクラスを参照することは想定されていないことを読みました。これは、パッケージ 'nn' の NeuralNetwork クラスがパッケージ 'nn.neurons' の Neuron を参照できないことを意味します。皆さんはこの原則に従っていますか?NeuralNetwork を「nn.networks」などに移動するとどうなるでしょうか。その場合、子パッケージではなく兄弟パッケージを参照します。それはより良い習慣ですか?
asp.net-mvc - 多くの子を持つモデルがある場合にビューとコントローラーを階層的に編成する方法
個人を一覧表示する Web サイトがあり、各個人には複数のプロパティがあり、1 対 1 (名前、住所)、1 対多 (好きな色、銀行口座など) があるとします。
私のビジネス層では、うまく階層的に編成されています。
コントローラーとビューを整理するにはどうすればよいですか? PersonsController、FavoriteColorsController などを用意する必要がありますか? すべてが同じ名前空間とフォルダーに存在しますか? または、IndexFavouriteColors、UpdateFavoriteColor などの多くのアクションを持つ PersonsController を 1 つだけ持つ必要があります。どちらのオプションもそれほどではありません。最初のものは、FavoriteColors が Person の子であり、人のコンテキストでのみ使用できることを示していません。2 つ目は、巨大な PersonController を作成します。
もちろん、ビューと同じこと。一番いいのは持っていることです
- ビュー/人/index.aspx
- Views/Persons/details.aspx
- ビュー/人/など
- ビュー/人/FavoriteColors/index.aspx
- ビュー/人/FavoriteColors/details.aspx
この例では、Person に 1 対多のプロパティをいくつかだけ指定しましたが、実際には多数 (10 以上) あるため、わかりやすくする必要があります。
ありがとう。
code-organization - 大規模なプロジェクトでクラスをどのように編成しますか?
アプリケーションには、モジュールとして非常に具体的に記述できる機能がたくさんあります。通常、何らかのセットアップ ダイアログが表示され、ユーザーが [OK] をクリックすると、実行するプロセスが構成され、そのプロセスが実行されます。場合によっては、ユーザーがより関与し、ユーザーが新しいダイアログを開いてしばらくの間ダイアログで作業し、基礎となるデータベースに変更を加える多くのことを行います。
私は通常、いくつかの標準クラスで終わります
よりエンドツーエンドのモジュールがあれば、それは WorkerPanel.cs WorkerData.cs SetupOptions.cs (実行間で保持されるパネルの状態) Lib/WhateverBackendStuffINeedToSupportModule ApiWrapper である可能性があります
現在、それぞれにフォルダーがあります。
ご覧のとおり、すべてが本当に広がっています。50 以上のモジュールでは、これらのフォルダーは実際には整理されていません。サブシステムごとに分割しても、まだ混乱しています。すべてをまとめて、すべてをクラス型ではなく関数で区切るのは悪い設計でしょうか?
クラスをどのように編成していますか?また、長所と短所は何ですか?
c - C のベスト プラクティスにおけるプロジェクト編成
大規模な C プロジェクトを編成するためのベスト プラクティスは何だろうと思っています。これは、オープン ソースのプロジェクトではなく、Git リポジトリに格納される可能性が高いプロのプロジェクトです。物事はどのように分類されるべきですか?構造はどこに行くべきですか?構造体にアタッチされた関数と、構造体をパラメーターとして受け取る関数をいつ使用する必要がありますか?
プロジェクト内のファイルのレイアウトに関して、どのようにまとめる必要がありますか? 最も適切な命名規則は何ですか?
qa - QA は開発に報告する必要がありますか?
これは私が非常に多くの企業で出くわした質問です.QAチームは開発組織に報告するべきですか、それとも会社の階層における開発と同等であるべきですか?
svn - すべてのプロジェクトを同じトランクに入れるのは良い考えですか?
複数のプロジェクトがある場合、デフォルトで通常推奨されるsvnリポジトリ構成は次のようになります。
私たちのプロジェクトには多くの相互依存関係があり、内部プロジェクトを参照するdllを実行しないことを考えると、それらの間でsvn:externalsを大量に使用する必要があります。バイナリを操作するのではなく、ソースコードを表示することをお勧めします。
外部を使いすぎると、リポジトリを分岐したり、変更を同期したりすると、複雑でエラーが発生しやすくなる可能性があるため、チームはこのソリューションをまったく信頼していませんでした。
そこで、チームメンバーは、これがより良い解決策になると私たち全員が考える何かを提案しました。すべてのプロジェクトを同じトランクに配置することです。
最初は、このアプローチにいくつかの問題があることを認識しましたが、全体として、これらの問題は、おそらく私たちが経験したことのない架空の状況に基づいていることに同意します。
このソリューションで発生する可能性のある深刻な問題がありますか?
collaboration - あなたの組織は共通のコンポーネントをどのように扱っていますか?
共通コンポーネントは、1 つのグループによって作成および維持され、多くのグループによって使用されるライブラリまたはその他のコードです。
私たちが抱えているいくつかの問題は次のとおりです。
- ユーザーはコンポーネントに関する問題を報告しません。
- ユーザーは、ニーズに合わせてコンポーネントの回避策を構築します。
- 締め切りに間に合わせるために、トランク バージョンとの互換性を破っています。
- ユーザーは、自分の (堅牢性の低い) ソリューションの方が優れていると考えて、独自のソリューションをコーディングすることになります。
あなたの組織は共通のコンポーネントをどのように扱っていますか?
私が持っているアイデア:
- コンポーネントをオープン ソース プロジェクトのように扱い、チームにパッチの提出を要求します。
- コードへのカスタム変更を完全に禁止します。
- ...
c++ - モジュール方式でソース コードを整理する方法
私は現在、かなり大規模になる範囲のプロジェクトに取り組んでいますが、C++ は比較的新しく、Java のバックグラウンドを持っているため、最善の進め方がわかりません。
次のようなディレクトリ構造が必要です。
現在、Engine ディレクトリに大量の .ccp/.h ファイルがあります。それらを適切なフォルダーに移動してそれらを結び付けようとすると、未定義のクラスに関連するコンパイルエラーのページが表示されます。親切な魂が初心者を正しい方向に向けるのを助けることができますか?!