問題タブ [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.
language-agnostic - 循環的な複雑さを最小限に抑えた条件付きロギング
「あなた/循環的複雑度の適切な制限は何ですか? 」を読んだ後、同僚の多くが、私たちのプロジェクトに関するこの新しいQAポリシーに非常に腹を立てていることに気付きました。
意味: 'if'、'else'、'try'、'catch' およびその他のコード ワークフロー分岐ステートメントは 10 個までです。右。「プライベート メソッドをテストしますか?」で説明したように、'、そのようなポリシーには多くの良い副作用があります。
しかし: 私たち (200 人 - 7 年間) のプロジェクトの開始時、私たちは喜んでログを記録していました (いいえ、ログに対するある種の「アスペクト指向プログラミング」アプローチにそれを簡単に委譲することはできません)。
そして、私たちのシステムの最初のバージョンが稼働したとき、ログ (ある時点でオフになっていました) が原因ではなく、常に計算されてから渡されるログ パラメーター(文字列) が原因で、巨大なメモリの問題が発生しました。 'info()' または 'fine()' 関数を呼び出して、ロギングのレベルが 'OFF' であり、ロギングが行われていないことを発見するだけです!
そのため、QA は戻ってきて、プログラマーに条件付きログを行うように促しました。いつも。
しかし現在、関数ごとに「移動できない」10 の循環的複雑度レベルが制限されているため、関数に入れるさまざまなログは負担として感じられると主張しています。 +1 循環的複雑度としてカウントされます!
そのため、関数に 8 つの「if」、「else」などがある場合、1 つの密結合された簡単に共有できないアルゴリズムと 3 つの重要なログ アクションがあります...条件付きログが実際にはそうでなくても、それらは制限に違反します。その機能の前述の複雑さの一部...
この状況にどのように対処しますか?
私のプロジェクトでは、(その「競合」による) 興味深いコーディングの進化がいくつか見られましたが、最初にあなたの考えを聞きたいだけです.
すべての回答に感謝します。
問題は「フォーマット」関連ではなく、「引数評価」
関連であると主張しなければなりません(何もしないメソッドを呼び出す直前に、非常にコストがかかる可能性のある評価)実際には aFunction() を意味し、 aFunction
() は文字列を返し、ロガーによって表示されるすべての種類のログ データを収集および計算する複雑なメソッドへの呼び出しである... またはそうでない (したがって、問題、および条件付きログを使用するため、「循環的複雑さ」の人為的な増加という実際の問題...)
私は今、あなたの何人かによって進められた '可変個引数関数' ポイントを取得します (ジョンに感謝します)。
注: java6 での簡単なテストでは、varargs 関数が呼び出される前に引数を評価することが示されているため、関数呼び出しには適用できませんが、「ログ取得オブジェクト」(または「関数ラッパー」) には適用できません。 ) は、必要な場合にのみ呼び出されます。とった。
私は今、このトピックに関する私の経験を投稿しました。
投票のために来週の火曜日までそこに残します。その後、あなたの回答の1つを選択します.
繰り返しますが、すべての提案に感謝します:)
c# - DataGridViewCell Bordercolor
c# で Datagridviewcell の Bordercolor を変更する方法を知っている人はいますか?
これが私が意味することの写真です:
Datagridviewstyle http://www.zivillian.de/datagridview.png 画像
Backgroundcolor、Textcolor、およびImagesは問題ありませんが、Borders を実現する方法がわかりません。
編集:これをwinformsで実現したい。
もう1つの問題は2列目の十字架ですが、それは後で...
text-editor - 現在、コード ファイルの最大幅を 80 文字にする正当な理由はありますか?
真剣に。22 インチのモニターでは、おそらく画面の 4 分の 1 しかカバーしていません。このルールを破るには弾薬が必要です。
制限があってはならないと言っているのではありません。私が言っているのは、80 文字は非常に小さいということです。
coding-style - メンバー変数にはどのようなプレフィックスを使用していますか?
「通常の」変数と簡単に区別できるように、メンバー変数に接頭辞を付けることがコードを理解する上で不可欠であることは間違いありません。
しかし、どのようなプレフィックスを使用しますか?
私はm_をプレフィックスとして使用するプロジェクトに取り組んできましたが、他のプロジェクトではアンダースコアのみを使用しました (アンダースコアのみでは十分に実証できないため、個人的には好きではありません)。
別のプロジェクトでは、変数の型も含む長いプレフィックス形式を使用しました。たとえば、mul_はunsigned long 型のメンバー変数のプレフィックスです。
使用しているプレフィックスの種類を教えてください (その理由を教えてください)。
編集:ほとんどの人は、メンバー変数に特別な接頭辞を付けずにコーディングしているようです! これは言語に依存しますか?私の経験から、C++ コードではメンバー変数のプレフィックスとしてアンダースコアまたはm_を使用する傾向があります。他の言語はどうですか?
coding-style - コードの可読性を向上させるために、Cockburn スタイルのテキスト UML ユース ケース コンテンツをコード ベースに埋め込むことは可能ですか?
コードでCockburnのユースケースを試す
複雑な UI コードを書いていました。私は、魚、凧、および海面 (Martin Fowler の著書「UML Distilled」で説明) を使用した Cockburn の使用例を採用することにしました。UI ワークフローのステップを表す静的定数に対して論理条件をテストできるように、Cockburn のユース ケースを静的 C# オブジェクトでラップしました。ラップされたオブジェクトとそのパブリック コンタントが名前空間を介して英語のユース ケースを提供するため、コードを読んで、それが何をしているかを知ることができるという考えでした。
また、リフレクションを使用して、説明したユース ケースを含むエラー メッセージを送り出すつもりでした。アイデアは、スタック トレースにいくつかの UI ユース ケースの手順を英語で含めることができるということです....DSL コンパイラを作成する必要なく、ミニで疑似軽量のドメイン言語を実現する楽しい方法であることが判明しました。だから私の質問は、これがこれを行う良い方法であるかどうかです? 誰かが同じようなことをしたことがありますか?
c# の例のスニペットが続きます
3 つのユーザー コントロール (多数のクリック可能な要素) を持つ aspx ページがあるとします。ユーザーは 1 つの特定のユーザー コントロール内のものをクリックする必要があり (おそらく何らかの選択を行う)、UI は選択が成功したことをユーザーに視覚的に知らせる必要があります。ここで、その項目が選択されている間、ユーザーはグリッドビューを参照して他のユーザー コントロールのいずれかで項目を見つけ、何かを選択する必要があります。これは簡単に管理できるように思えますが、コードが見苦しくなります。
私の場合、ユーザーは、メイン ページによってキャプチャされたすべての送信済みイベント メッセージを制御します。このようにして、ページは UI イベントの中央プロセッサのように機能し、ユーザーがクリックしたときに何が起こるかを追跡できました。
そのため、メインの aspx ページで、最初のユーザー コントロールのイベントをキャプチャします。
したがって、MyCompany.MyApp.Web.UseCases 名前空間には、次のようなコードが含まれている可能性があります。
クラスに埋め込まれたワークフローのユース ケースは、内部クラス、静的メソッド、列挙型など、最もクリーンな名前空間を提供するものであれば何でもかまいません。最初に何をしたか覚えていませんが、写真はわかります。
silverlight - Silverlight2の不変のスタイル
Silverlight 2で不変のスタイルを回避するための良いパターンを見つけた人はいますか?
つまり、一度設定した要素のスタイルをプログラムで切り替えることはできないという事実に対する回避策があります。つまり、ここの2行目では、壊滅的な障害の例外がスローされます。
this.TestButton.Style =(Style)Application.Current.Resources ["Fred"];
this.TestButton.Style =(Style)Application.Current.Resources ["Barney"];
haskell - if/else 制御ブロックの Haskell コーディング スタイルは適切ですか?
関数型プログラミングに近づくのに役立つことを期待して、Haskell を学んでいます。以前は、C、Java、D など、C に似た構文の言語を主に使用していました。
Wikibooks のチュートリアルでif
使用されている/else
コントロール ブロックのコーディング スタイルについて少し質問があります。コードは次のようになります。
このコーディング スタイルは、C ライクな言語で推奨されるスタイルに完全に違反しているため、混乱if
しelse if
ますelse
。
else
と同じ列でインデントすると解析エラーになるため、Haskellでは機能しないことはわかっていますif
。
しかし、次のスタイルはどうでしょうか。上記より分かりやすいと思います。しかし、上記は Wikibooks と、Haskell の公式 Web サイトで「オンラインで入手できる最高のチュートリアル」とマークされている Yet Another Haskell Tutorial で使用されているため、このコーディング スタイルが Haskell プログラムの慣例であるかどうかはわかりません。
では、どのコーディング スタイルがより頻繁に使用されているのか、またはこのコードの別のコーディング スタイルはあるのでしょうか?
formatting - プログラミングスタイルは重要ですか? どのくらい重要ですか?
昨年、私はチーム メンバーのコードのトラブルシューティングを行っていましたが、インデントとコメントがありませんでした。私は彼にそれは良い考えではないと言って話していましたが、彼は気分を害しました。彼は私よりも頭が良かった、または確かに教育を受けていた.
それ以来、彼がマイクロソフトに応募したことを知り、二重連結リストの実装を依頼されたとき、インデントやコメントなしで書いて、スタイルについて心配する時間がないと述べました。(完了までに 2 時間かかるメール送信でした)
マイクロソフトは彼に電話をかけませんでした.....彼らはどのように応答したと思いますか?あなたはどのように応答しますか?
この場合、彼らが何をするかを提案できるマイクロソフトの誰かがここにいますか?
programming-languages - Haskell初心者:レイアウトを使用するかどうか? 長所と短所は何ですか(例を使用)
Haskells レイアウト機能に関する多くの情報を見つけることができないようです。これは、オプションであることを除いて、pythons の書式設定要件のようなものであることを理解しているためです。このオプションを正しく使用しないようにするにはどうすればよいですか? 言語自体にしっかりとした感触を得るために、それなしで始めるのは良い考えでしょうか?