タグ付けされた質問 「coding-style」

コーディングスタイルは、ソースコードの読みやすさと理解に役立つ一連のガイドラインです。

9
コードコメントのピリオド/フルストップについてはどう思いますか?[閉まっている]
私が見た、これはSO居酒屋に尋ねたので、私はここに質問を投稿しています。面白い質問だと思いました。(もちろん、SOに属していませんが、ここでは問題ないと思います。) コードコメントにピリオドを追加しますか(またはOPが書いたように「フルストップ」)。 関連性を保つために、なぜですか?

7
戻り値の計算とreturnステートメントを1行のメソッドに分割しますか?
私は同僚returnと、ステートメントと、戻り値を2行で計算するステートメントを壊すことについて議論しました。 例えば private string GetFormattedValue() { var formattedString = format != null ? string.Format(format, value) : value.ToString(); return formattedString; } の代わりに private string GetFormattedValue() { return format != null ? string.Format(format, value) : value.ToString(); } コードに関しては、最初のバリアントには値が実際には表示されません。私にとって、後者は、特に短い方法の場合、より明確です。彼の主張は、前者のバリアントの方がデバッグが簡単だということでした-VisualStudioではブレークポイントにより実行が停止したときにステートメントを非常に詳細に検査できるため、これは非常に小さなメリットです。 私の質問は、それでもデバッグを一見するのを簡単にするためだけに、あまり明確でないコードを書くのが有効なポイントであるなら?それ以上の引数があるため、分割計算とを有する変異体returnのステートメントは?

11
メンテナンスに関しては、「その他」はブレースを介在させずに安全と見なされますか?
であるelse while「安全」メンテナンスが賢明と考え括弧を介在せずに? if-else以下のような中括弧なしでコードを書く... if (blah) foo(); else bar(); ...中括弧がないため、コードの意味を不注意に変更することが非常に簡単になるため、リスクが伴います。 ただし、以下も危険ですか? if (blah) { ... } else while (!bloop()) { bar(); } またはelse while、介入する中括弧なしで「安全」と見なされますか?

9
コメントコードのスタイルと推奨事項
コードにコメントを書く際のアドバイスや経験をお聞かせください。それらを最も簡単で有益な方法でどのように書くのですか?コードの一部をコメントするとき、どのような習慣がありますか?たぶん、いくつかのエキゾチックな勧告? この質問が、コメントのための最も興味深いアドバイスと推奨事項を収集することを願っています。 OK、始めます。 通常、/* */多くの行をコメントする必要がある場合でも、コメントは使用しません。 利点:このような構文と1行のコメントを混在させるよりも、コードの見た目が良くなります。ほとんどのIDEには、選択したテキストをコメントする機能があり、通常は1行の構文でコメントします。 短所:IDEなしでこのようなコードを編集するのは難しいです。 完成したコメントの最後に「ドット」を置きます。 例えば: //Recognize wallpaper style. Here I wanted to add additional details int style = int.Parse(styleValue); //Apply style to image. Apply(style); 利点:完了したコメントにのみ「ドット」を配置します。一時的な情報を書き込むことができる場合があるため、「ドット」がないと、戻り、このコメントにテキストを追加する必要があることがわかります。 列挙内のテキストの位置合わせ、コメントパラメーターなど 例えば: public enum WallpaperStyle { Fill = 100, //WallpaperStyle = "10"; TileWallpaper = "0". SizeToFit = 60, //WallpaperStyle = "6"; …

16
短い識別子は悪いですか?[閉まっている]
短い識別子は悪いですか?識別子の長さとコードの理解はどのように相関しますか?識別子の命名に関しては、他にどのような要因(コードの理解以外)を考慮する必要がありますか? 回答の質を維持するために、このテーマに関する調査が既に行われていることに注意してください! 編集 私が提供した両方のリンクが大きな識別子が有害であることを示しているとき、誰もが長さが関連しているとは思わないか、より大きな識別子を好む傾向があることに興味があります! リンク切れ 以下のリンクはこのテーマに関する研究を指していましたが、今は壊れています。私は論文のコピーを持っていないようで、それが何であったかを思い出しません。他の誰かがそれを理解できるように、ここに残しておきます。 http://evergreen.loyola.edu/chm/www/Papers/SCP2009.pdf

7
必須ではありませんが、オプションのパラメーター名を指定しますか?
次の方法を検討してください。 public List<Guid> ReturnEmployeeIds(bool includeManagement = false) { } そして、次の呼び出し: var ids = ReturnEmployeeIds(true); システムを初めて使用する開発者にとって、何trueが起こったのかを推測するのはかなり難しいでしょう。最初にやるべきことは、メソッド名にカーソルを合わせるか、定義に移動することです(どちらも少しでも大きなタスクではありません)。しかし、読みやすくするために、次のように書くのは理にかなっています。 var ids = ReturnEmployeeIds(includeManagement: true); コンパイラが必要としないときにオプションのパラメータを明示的に指定するかどうかを正式に議論している場所はどこにありますか? 次の記事では、特定のコーディング規則について説明しています。https://msdn.microsoft.com/en-gb/library/ff926074.aspx 上記の記事に似た何かが素晴らしいでしょう。

5
共有コーディングパラダイムを使用するという点で、言語Yでプログラムを記述しているように、言語Xで何かを記述するのがなぜ悪いのか[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 しばらく前に、私はC ++で書かれた何かについてのSOの質問をし、代わりに手で問題に答えを得るための、コメントは、私はそれがあることが示された場合でも、私のコーディングスタイル上のすべての大騒ぎWIPのコードの一部そして、ベースケースを実行させたときに、後でクリーンアップするつもりだった。(私は非常に多くの票を集めたので、私はSOの担当者がすでにほぼ最悪であるため、質問を撤回することにしました) なぜ人々は「あなたは初心者だ、自分で性交をする」という厳しいラインを採用するのだろうと思いました。私は、あたかもJavaであるかのようにC ++を書いていると非難されていました。私が理解できない何か、それでも私を困惑させます。 私は、間隔を置いてではあるが、何年もの間、かなりの数のOOP言語でプログラミングを行ってきました。使用可能なライブラリと、手元のジョブに最適な実行環境の観点から、使用する言語を選択します。私はOOPコードにデザインパターンを採用していますが、パターンの使用は適切であり、オブジェクト指向では賢明であると確信しています。私はOOPツールボックスを理解していますが、コーディングの知恵を示すためにきちんとしたトリックを使用するのではなく、本当に必要だと思うときにのみツールを使用することを選択します。(私が知っているのは一流ではありませんが、n00bレベルでもないと思います)。 1行書く前にコードを設計します。テストを定義するために、特定のクラスの目標と、クラスが順守しなければならないテスト基準をリストします。シーケンス図を作成してコードを書く方が簡単なので、インターフェイスが明らかになった後にテストを書くことにしました。 質問で投稿したコードの一部で、スマートポインターを使用する代わりに、ポインターを使用していることを認めなければなりません。できる限りRAIIを使用しています。適切なRAIIとは、nullpointersに対する保護を意味しますが、徐々に作業を進めます。それは進行中の作業であり、後でクリーンアップするつもりでした。この働き方は強く非難されました。 私の見解では、基本ケースが実行可能な思考方法であるかどうかを確認できるように、最初に実際の例を用意する必要があります。また、ベースケースが証明された後、コードのクリーンアップはアジャイルのリファクタリングフェーズの典型的なことだと思います。私はゆっくりとCxx標準を取得していますが、実稼働コードでまだ習得していない概念を使用するリスクを負うのではなく、理解しているものを使用することを好みます。たまに新しいものを試すこともありますが、通常はその目的のために、私が脇に置いているプレイプロジェクトでやっています。 [編集]質問を始める前に、gnatの提案[1]が検索に表示されなかったことを明確にしたいと思います。ただし、彼の提案は質問の1つの側面をカバーしていますが、彼がリンクした質問は私の質問の核心ではなく、その一部にすぎません。私の質問は、自分のコーディングスタイルに対する応答と、さまざまなコーディングスタイルと(見かけの)レベルのスキルを処理する専門的な側面についてです。SOについての以前の質問と、それが適切な事例としての回答です。[/編集] 質問は次のとおりです。あなたのコーディングスタイルを使用していない人をsc笑するのはなぜですか。 手元にある問題/下位区分は次のとおりです。 リファクタリングにより後で堅牢になった場合、プロトタイプの状況でエラーが発生しやすいコードを使用するのはなぜプログラミングの悪い習慣になるのでしょうか? C ++で書かれたプログラムは、Javaで書かれたようにどのようにできますか?何が悪いプログラムになっているのですか(現在のスタイルの意図と改善する予定の作業を示したと考えていますか?) 特定のプログラミングパラダイム(たとえば、OOP / DP)で使用される構造を使用することを選択した場合、どのように悪い専門家になりますか? [1] 高速でバグのあるものを開発し、エラーを修正するか、コードの各行に注意して遅くしますか?

5
コーディングスタイルの原則に関する科学的に厳密な研究はありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 コーディングスタイルの原則(たとえば、単一出口の原則)は本当に良いことですか?常にですか、それとも時々ですか?それは実際にどのくらい違いますか? あなたの意見がどうであれ、これらは明らかに主観的な質問です。それとも彼らですか? コーディングスタイルの原則について客観的で科学的に厳密な研究を試みた人はいますか? 誰がどのように読みやすさの二重盲検研究を行うか想像できませんが、おそらく二重無知が可能かもしれません-被験者として研究されている原則を知らない学生と、研究を管理する非プログラマーを使用してください。

5
Javaでは、プライベートヘルパーはパブリックメソッドの上または下に移動する必要がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 同僚と私は、Javaクラスでのメソッドの順序に関して反対のプラクティスを持っていることに気付きました。私たちの1人は、主要なパブリックメソッドでクラスを開始し、その後、プライベートヘルパーをすべて配置します。もう一方は、パブリックメソッドが最後にあることを確認します。 明らかに、これは単なるスタイルの問題であり、正しい答えはありません。しかし、この問題が単にYooks対Zooksの戦いであり、どちらか一方を勝手に選ぶだけであると判断する前に、おそらく標準Javaスタイルガイドの推奨事項があるのか​​、あるアプローチが他のアプローチより優れている実用的な理由があるのではないかと思っていました。

6
読みやすさは(参照)パラメーターでconstを使用しない正当な理由ですか?
いくつかの関数を作成するときに、次のようなパラメーターにconstキーワードが見つかりました。 void MyClass::myFunction(const MyObject& obj,const string& s1,const string& s2,const string& s3){ } IDEまたはvimで行を2行に分割することがよくあるので、パラメーターのすべてのconstキーワードを削除したいと思います。 void MyClass::myFunction(MyObject& obj,string& s1,string& s2,string& s3){ } それはconstを使用しない正当な理由ですか?パラメータオブジェクトを手動で変更しないで維持することはできますか?

7
「コードサンプル」はどのように表示されますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 ちょうどいい電話インタビューをしたばかりです(CakePHPに関連した立場のため、質問にとって特に重要なことではありません)。インタビュアーは私の履歴書と性格に感銘を受けたようです。しかし、最後に、彼は私の既存の作業プロジェクトからのコードサンプルをメールで送信するように頼みました。「あなたがひそかにひどいプログラマーではないことを確認するために! 私は自分のコードがそれ自体で成り立たないのではないかと心配しているわけではありませんが、私は専門家というよりは中級のプログラマーです。コードサンプルがその場で私を除外する場合、コードサンプルが落ちないことを確認するべき明らかな落とし穴は何ですか?第二に、これはおそらく答えるのが難しい部分です。コードサンプルのどの機能が印象的で、すぐにプログラマーに好意的になりますか? すべてのアイデアや提案を歓迎します!

6
一度だけ使用する場合、文字列定数を定義する必要がありますか?
Xaxを使用してアプリケーションのデータモデルにアクセスできるようにするJaxen(JavaのXPathライブラリ)のアダプターを実装しています。 これは、文字列(Jaxenから渡された)をデータモデルの要素にマップするクラスを実装することによって行われます。合計で1000以上の文字列比較を行う約100のクラスが必要になると推定されます。 これを行う最良の方法は、各文字列を定数として定義するのではなく、コードに直接書き込まれた文字列を使用したif / elseステートメントを単純にすることだと思います。例えば: public Object getNode(String name) { if ("name".equals(name)) { return contact.getFullName(); } else if ("title".equals(name)) { return contact.getTitle(); } else if ("first_name".equals(name)) { return contact.getFirstName(); } else if ("last_name".equals(name)) { return contact.getLastName(); ... ただし、文字列値をコードに直接埋め込むのではなく、文字列定数を作成することを常に教えられました。これは次のようになります。 private static final String NAME = "name"; private static final String TITLE …

8
ループ内にループを持つことはどの時点でタブーですか?
ちょっと興味があるんだけど。Linus Torvaldsからこれを読んだので、私が今までに持っていたほとんどはforループ内のforループでした。 タブは8文字であるため、インデントも8文字です。インデント4(または2!)の文字を深くしようとする異端運動があります。これは、PIの値を3に定義しようとすることに似ています。 理論的根拠:インデントの背後にある全体的な考え方は、制御ブロックの開始位置と終了位置を明確に定義することです。特に、20時間連続して画面を見ていると、大きなインデントがある場合にインデントがどのように機能するかを簡単に確認できます。 現在、一部の人々は、8文字のインデントがあると、コードが右に移動しすぎて、80文字の端末画面で読みにくくなると主張します。 その答えは、3レベル以上のインデントが必要な場合、とにかくねじ込まれてしまい、プログラムを修正する必要があるということです。 https://www.kernel.org/doc/Documentation/CodingStyle 私は、ループの3番目の層に行くことは受け入れられない慣行であり、コードを再構築すると考えました(主にQt)。 Linusは冗談を言っていましたか? 言語やアプリケーションに依存しますか? 3レベル以上のループが絶対に必要なものはありますか?

2
同じことをする異なる関数シグネチャを提供することは良い考えですか?
以下は、3つの値で構成されるC ++クラスです。 class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; すべてのパラメータータイプは異なります。 順序が問題にならないように、コンストラクタをオーバーロードできます。 class Foo{ //Constructors Foo(std::string, char, int); Foo(std::string, int, char); Foo(char, int, std::string); Foo(char, std::string, int); Foo(int, std::string, char); Foo(int, char, std::string); private: std::string foo; char bar; int baz; }; しかし、それは良い考えですか? クラス/関数に必要なものがわかっていたので、それを始めました。 私はそれがそれらをどの順序で取ったかをいつも覚えていませんでした。 …

7
「var」およびヌル合体演算子「??」読みやすさを妨げることなく楽しまれる?
この質問は、Software Engineering Stack Exchangeで回答できるため、Code Review Stack Exchangeから移行されました。 8年前に移行され ました。 私は質問のタイトルが非常に主観的であることを知っていますが??、私は同僚によるオペレーターの使用に直面しましたvar。 ??演算子を使用するための引数は、コードの可読性を奪います。 私の質問は、使用を開始したときに同じことは起こりませんvarか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.