問題タブ [coding-style]
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.
java - Javaの再帰アルゴリズムで「完了したこと」のカウントを維持する方法は?
文字列を 1 文字ずつ処理し、それを解析してツリーのような構造を作成する再帰アルゴリズムがあります。パーサーが現在いる文字インデックスを追跡できるようにしたいのですが (他の何よりもエラーメッセージについて)、複数の返された型を処理するタプルのようなものを実装することに熱心ではありません。
メソッドの外側で宣言され、再帰メソッドに渡された Integer 型を使用しようとしましたが、それは最終的なものであるため、戻ったときに再帰呼び出しのインクリメントは「忘れられます」。(整数値の増分により、値渡しオブジェクトの参照ポイントが新しいオブジェクトになるため)
私のコードを汚染しないような仕事に似たものを得る方法はありますか?
language-agnostic - 関数には return ステートメントを 1 つだけ含める必要がありますか?
関数内に return ステートメントを 1 つだけ持つ方がよい理由はありますか?
それとも、関数内に多くの return ステートメントが存在する可能性があることを意味する、論理的に正しいとすぐに関数から戻ることは問題ないのでしょうか?
parameters - コンストラクター引数が多すぎますか?
次のフィールドを含むCustomerというクラスがあるとします。
- ユーザー名
- Eメール
- ファーストネーム
- 苗字
また、ビジネスロジックに従って、すべてのCustomerオブジェクトにこれらの4つのプロパティを定義する必要があるとしましょう。
これで、コンストラクターにこれらの各プロパティを指定させることで、これを非常に簡単に行うことができます。ただし、Customerオブジェクトに必須フィールドを追加する必要がある場合に、これが制御不能になる可能性があることは簡単にわかります。
20以上の引数をコンストラクターに取り込むクラスを見てきましたが、それらを使用するのは面倒です。ただし、代わりに、これらのフィールドが必要ない場合は、未定義の情報が発生するリスクがあります。さらに悪いことに、これらのプロパティを指定するために呼び出し元のコードに依存している場合は、オブジェクト参照エラーが発生します。
これに代わるものはありますか、それともコンストラクター引数のX量が多すぎて、一緒に暮らすことができないかどうかを判断する必要がありますか?
standards - バイナリ参照ではなくプロジェクト参照を使用する必要があるのはいつですか?
私の会社には、多くのクラス ライブラリ プロジェクトとサポート テスト プロジェクトで構成される共通コード ライブラリがあります。各クラス ライブラリ プロジェクトは、Company.Common.Serialization.dll などの単一のバイナリを出力します。ソース コードだけでなく、コンパイルおよびテスト済みのバイナリも所有しているため、使用するアプリケーションでバイナリまたはプロジェクトの参照を使用する必要があるかどうかについて議論があります。
プロジェクト参照を支持するいくつかの引数:
- プロジェクト参照により、ユーザーは、追加のプロジェクト/ソリューションを読み込むオーバーヘッドなしで、すべてのソリューション コードをデバッグおよび表示できます。
- プロジェクト参照は、ソース管理システムにコミットされた一般的なコンポーネントの変更に遅れずについていくのに役立ちます。変更はアクティブなソリューションがなくても簡単に識別できるからです。
バイナリ参照を支持するいくつかの引数:
- バイナリ参照はソリューションを簡素化し、ソリューションの読み込み時間を短縮します。
- バイナリ参照により、開発者は、既に焼き付けられ、安定性が証明されているコードに気を取られる可能性がなくなり、新しいコードに集中できるようになります。
- バイナリ参照は、私たちの組織外の人々がそうする必要があるのと同じように、共通ライブラリを使用するように、私たちのものを適切にドッグフードすることを余儀なくさせます.
- バイナリ参照はデバッグ (ステップイン) できないため、使用するアプリケーションのコンテキスト内でテストおよび修正するのではなく、既存のテスト プロジェクトを拡張して問題を複製および修正する必要があります。
- バイナリ参照により、流入バージョンではなく安定したバージョンのバイナリが参照されるため、クラス ライブラリ プロジェクトでの並行開発が消費アプリケーションに影響を与えないようになります。必要に応じて、コンポーネントの新しいリリースを組み込むかどうかは、プロジェクト リーダーの決定になります。
プロジェクトまたはバイナリ参照を使用する際のポリシー/好みは何ですか?
coding-style - 規格書
私は、年間 10 から 15 のプロジェクトのプロジェクト負荷を持つ約 15 人の開発者のチームのためにコーディング標準文書を書いています。他のセクション (それらにたどり着いたらここに投稿するかもしれません) の中で、コードのフォーマットに関するセクションを書いています。まず、何らかの理由で、基本的で一貫したコードのフォーマット/命名基準を確立するのが賢明だと思います。
過去 3 年間にこのチームが作成した約 10 件のプロジェクトを調べましたが、明らかに、かなり幅広いスタイルを見つけています。請負業者が出入りすることもあり、時にはチームの規模が 2 倍になることもあります。
私は、実際に成果を上げたコードのフォーマットと命名基準に関するいくつかの提案を探しています...しかし、それは実際に正当化することもできます. 一貫性と共有パターンは、コードをより保守しやすくするのに大いに役立つと思います...しかし、上記の標準を定義するときに考慮すべき他のことはありますか?
括弧をどのように並べますか?クラス、メソッド、try catch ブロック、switch ステートメント、if else ブロックなどを扱うときに、同じ括弧のガイドラインに従っていますか?
列にフィールドを並べますか? プライベート変数にアンダースコアを付けたり前に付けたりしますか? ファイル内の詳細を見つけやすくするために、命名規則に従っていますか? クラスのメンバーをどのように並べますか?
名前空間、パッケージ、またはソース コード フォルダー/組織の標準に関する提案についてはどうですか? 私は次のようなことから始める傾向があります。
これらの基準を口述する前に、私が慣れ親しんでいる以外の、より受け入れられている慣行があるかどうかを知りたいと思っています。すでにオンラインで公開されている標準へのリンクも素晴らしいでしょう。
perl - Perl でコーディング標準を適用するための優れた自動フレームワークはありますか?
私が知っているのは、Perl ::批評家です
そして、私のグーグルは、これまでの複数の試行で結果をもたらしませんでした. :-(
ここで何かお勧めはありますか?
コーディング標準に従って Perl::Critic を構成し、コード ベースで実行するためのリソースをいただければ幸いです。
language-agnostic - 'foo' とはどういう意味ですか?
これがプログラミングの質問として適切であることを願っています。どのプログラミング チュートリアルでも、最終的にコード例で「foo」に出くわします。(そうだね?)
'foo' とはどういう意味ですか?
無意味だとしたら、いつ頃から使われ始めたのですか?
python - Python での一重引用符と二重引用符
ドキュメントによると、それらはほとんど交換可能です。どちらか一方を使用する文体上の理由はありますか?
.net - 分離された ASP.NET Web アプリケーションに複数のアセンブリを使用する必要がありますか?
企業の IT 環境から生まれた標準は、常に各レイヤー、ビジネス ロジック、データ アクセス、および場合によっては特定の型のより大きな分離に対してクラス ライブラリ プロジェクトを作成することでした。
現在、自分の Web アプリケーション プロジェクトに取り組んでいるので、この方法でコードを分離する必要はないと思います。
このロジックを共有する必要がある複数のアプリケーションやサービスを有効にする必要はありません。また、展開シナリオに利点はないと思います。
私はすべての成果物を 1 つの Web アプリケーションに配置し、プロジェクト フォルダーで論理的に分離することに傾いています。
コミュニティの考えを知りたかったのです。
さらに情報を追加させてください...
私は MVC プレビュー 5 を使用してこのアプリケーションを作成しているため、単体テストの部分は、フレームワーク内の懸念継承の分離によってサポートされます。私はすべてのテストが好きです!