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

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

12
より良いプログラマーになるために、物理学者として自分自身を教える[非公開]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私はいつも物理学が好きで、コーディングがいつも好きだったので、大学で数値物理学(詳細は関係ありません、クラスターのほとんどは並列プログラミング)を行う博士号取得者のオファーを受けたとき、それは無かったです-私にとっては非常に簡単です。 しかし、ほとんどの物理学者として、私は独学しています。オブジェクト指向の方法でコーディングする方法についての幅広い背景知識や、kDツリーでの検索を最適化する特定のアルゴリズムの名前はありません。 これまでの私の仕事はすべて物理学と科学的結果に関心があったため、間違いなくいくつかの悪い習慣があります。それは、自分のコーディングがチームワークではなく自分のものだからです。Cは非常に単純で、「あなたが書くものはあなたが手に入れるもの」なので、私はほとんどCを使用しました-派手な抽象化の必要はありません。ただし、抽象化に伴うパワーについて詳しく知りたいため、最近C ++に切り替えました。これはかなりCに似ています(少なくとも構文的には)。 コンピュータサイエンスの卒業生のように、優れた抽象的な方法でコードを作成する方法を教えてください。 私は自分のコードが効率的であることは知っていますが、エレガントで読みやすいものにしたいのです。抽象プログラミングに関する1000ページの本をいくつか読む時間がないことに注意してください。私は実際の物理学関連の研究に時間を費やす必要があります(上司がプログラムを洗練する方法について考えることに時間を費やしていることを知っていたら、スーパーバイザーは私を笑います)。プログラマーの観点から、自分の仕事も良いかどうかをどのように評価しますか?

13
繰り返しコードを入力しやすくするための#defineの適切な使用ですか?
コーディングを簡素化するために#defineを使用して完全なコード行を定義することは、プログラミングの実践として良いか悪いかについて意見はありますか?たとえば、大量の単語を一緒に印刷する必要がある場合、イライラするタイピングを取得します << " " << coutステートメントの単語間にスペースを挿入します。私はただできる #define pSpace << " " << そしてタイプ cout << word1 pSpace word2 << endl; 私にとっては、これはコードの明快さを加減せず、入力を少し簡単にすることもありません。通常デバッグのために、タイピングがはるかに簡単になると思う他のケースがあります。 これについて何か考えはありますか? 編集:すべての素晴らしい答えをありがとう!この質問は、繰り返しタイピングを何度も行った後に私に届いたものですが、使用する他の混乱の少ないマクロがあるとは思いもしませんでした。すべての答えを読みたくない人にとって、最良の代替案は、IDEのマクロを使用して、繰り返し入力を減らすことです。

8
コードで「データベースリクエストが多すぎる」と判断されるのは何ですか?
これは私自身の議論であり、私の同僚の何人かは、私がここに来て、それについて一般的なコンセンサスがあるかどうかを確認すると思います。 基本的に、データベースコールに関する次の2つの意見があります。1。データベースコールの数を減らすために必要なすべてを取得するために、1つの大きなコールを行います。 DB呼び出し これが特に効果を発揮するのは、一般的なコードです。Employeeクラスの例を使用しますが、これはかなり簡単です。 Employeeクラスに10個の値属性(名、姓、雇用など)があり、次に2つのクラス属性があります... 1はDepartmentクラスを指し、1つのスーパーバイザーは別のEmployeeオブジェクトを指しているとします。 考え方1では、従業員データと、Department属性とSupervisor属性を設定するために必要なフィールド、または少なくともこれらのサブオブジェクトから最も頻繁に使用されるフィールドを返す1つの呼び出しを行います。 考え方#2では、最初にEmployeeオブジェクトのみを設定し、次に実際に要求された場合にのみDepartmentおよびSupervisorオブジェクトのみを設定します。 2のスタンスは非常に単純です。要求のサイズと、それらの要求のいずれかが行われるたびにヒットする必要があるデータベースオブジェクトの数を最小限に抑えます。#1のスタンスは、適切に実装できたとしても、コードが複数の接続を作成しなければならないという事実が、Webサーバーとデータベース間の接続を減らすのではなく、より多くの負担を引き起こすということです。 この調査の背後にある原動力は、Webサーバーとデータベースサーバー間のトラフィック量が制御不能になっていることです。

6
コードコメントにタイトルを書きますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私が書いたいくつかの古いコード(大学の1年目)を参照していたときに、コードのさまざまな部分の前にコメントタイトルを書くことに気づきました。のようなもの(これはモノポリーゲームから): /*Board initialization*/ ...code... /*Player initialization*/ ...code... /*Game logic starts here*/ /*Displaying current situation*/ ...code... /*Executing move*/ ...code... /*Handle special event*/ ...code... /*Commit changes, switch to next player*/ ...code... これは冗長であり、コードが非常に明確であれば間違いなく不要かもしれませんが、ファイルをスキャンしてみると、実際のコードをほとんど見ていなくても、何が起こっているのかを知っているように強く感じました。特定の状況でこれが適切であると私は間違いなく見ることができるので、これをしますか?それは良い考えだと思いますか?それとも多すぎますか?

3
いずれかのオーバー(チェック済み)例外を使用する理由
少し前に、Javaの代わりにScalaを使い始めました。私にとって言語間の「変換」プロセスの一部は、Either(チェックされた)Exceptions の代わりにs を使用することを学ぶことでした。私はしばらくこの方法でコーディングしてきましたが、最近、それが本当に良い方法かどうか疑問に思い始めました。 1つの大きな利点Eitherは、Exceptionパフォーマンスの向上です。Exceptionスタックトレースを構築する必要があり、スローされています。ただし、私が理解している限りでは、投げることExceptionは難しい部分ではありませんが、スタックトレースを構築することは重要です。 しかし、その後、常にを使用してExceptionsを構築/継承することができます。scala.util.control.NoStackTraceさらにEither、実際にはの左側が実際にException(パフォーマンスブーストを控える)であるケースがたくさんあります。 もう1つの利点Eitherは、コンパイラの安全性です。ScalaコンパイラExceptionは、(Javaのコンパイラとは異なり)ハンドルされていないs について文句を言いません。しかし、私が間違っていなければ、この決定は、このトピックで議論されているのと同じ推論で推論されます。 構文の面では、Exception-styleの方がはるかに明確だと感じています。次のコードブロックを調べます(どちらも同じ機能を実現しています)。 Either スタイル: def compute(): Either[String, Int] = { val aEither: Either[String, String] = if (someCondition) Right("good") else Left("bad") val bEithers: Iterable[Either[String, Int]] = someSeq.map { item => if (someCondition(item)) Right(item.toInt) else Left("bad") } for { a <- aEither.right bs <- reduce(bEithers).right ignore …

2
純粋に審美的な理由で入れ子関数を作成しますか?
私は、純粋な美的機能を作成するというアイデアについて、他のプログラマーがどう考えているのか、いつも疑問に思っていました。 データのチャンクを処理する関数があるとしますFunction ProcessBigData。たとえば、そのデータにのみ有効ないくつかのプロセスステップが必要Step1だStep2としStep3ます。 ソースコードで最もよく見られる通常のアプローチは、次のようなコメントを書くことです。 Function ProcessBigData: # Does Step1 Step1.. Step1.. #Does Step2 Step2.. Step2.. 私はいつもやっていますが、仲間の仲間がそのようなコーディングスタイルを欠いているためにいつも間違っていると感じました: Function ProcessBigData: Function Step1: Step1.. Step1.. Function Step2: Step2.. Step2.. Step1() -> Step2() 私は主に、JavascriptとPythonでそのようなスタイルに欠点があるかどうかを心配しています 表示されない代替手段はありますか?

4
プライベートフィールドの有無にかかわらずプロパティを優先する必要がありますか?
現在作業しているコードベースには、プライベートフィールドとパブリックプロパティを使用する規則があります。たとえば、ほとんどのクラスのメンバーは次のように定義されています。 // Fields private double _foo; private double _bar; private double _baz; // Properties public double Foo { get{ return _foo; } set{ _foo = value; } } public double Bar { get{ return _bar; } set{ _bar = value; } } public double Baz { get{ return _baz; } …
16 c#  coding-style 

4
C#メソッドでの戻り変数の宣言と直接値を返す
戻り変数に関する議論では、チームの一部のメンバーは、呼び出し元に結果を直接返すメソッドを好む一方、他のメンバーは、呼び出し元に返される戻り変数を宣言することを好みます(以下のコード例を参照) 後者の引数は、コードをデバッグしている開発者が、呼び出し元に戻る前にメソッドの戻り値を見つけることができるため、コードが理解しやすくなることです。これは、メソッド呼び出しがデイジーチェーン接続されている場合に特に当てはまります。 どちらが最も効率的であるか、および/または、あるスタイルを別のスタイルよりも採用する必要があるという理由はありますか? ありがとう private bool Is2(int a) { return a == 2; } private bool Is3(int a) { var result = a == 3; return result; }

7
スコープを示すために空白と{}を使用する言語の長所と短所は何ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 空白を使用する方が良いのか、スコープを示すために括弧のようなトークンを使用する方が良いのかについて、矛盾があるようです。一貫性のないインデント問題に対する多くのpythonのソリューションを称賛しましたが、多くの意見が異なります: トークンとして空白を含む言語は死ぬ必要があります。 同じ答えに後で投稿: 私は実際に試してみるまで、トークンとしての空白のようなものでした。おそらく、私の個人的な空白スペースのレイアウトが、python-landの誰もが使用しているものとほとんど一致するのを助けたでしょう。おそらく私は少しミニマリストなのかもしれませんが、とにかくインデントするつもりなら、なぜ{}に悩まされるのですか? 私はそれぞれの側にいくつかの明確な議論を見ることができます: 空白を使用: コードの一貫性のないインデントを減らすのに役立ちます 同じ目的を果たすために、目に見えるトークンを空白で置き換えることにより、画面をクリアします トークンを使用: コードをさまざまなレベルにカットアンドペーストするのがはるかに簡単です(インデントを修正する必要はありません) より一貫性のある。一部のテキストエディタでは、空白が異なって表示されます。 現在より人気があります。 見逃した点はありますか?どっちがいい?どちらかと長い間働いた後の知恵の言葉はありますか? PS。言語が各制御構造に同じトークンを使用しない場合、それは嫌いです。VBは、そのと本当に迷惑ですEnd Ifし、End While他のほとんどの言語は、単にすべてのために{}のを使用し、ステートメント。しかし、それは別の質問のトピックかもしれません...

6
メソッド名と関数名の「A」、「an」、「the」:あなたはどう思いますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私たちの多くは、このようなメソッド名を見たことがあります。 UploadTheFileToTheServerPlease CreateATemporaryFile WriteTheRecordToTheDatabase ResetTheSystemClock つまり、文法的にも正しい英語の文であり、純粋に散文のように読めるように余分な単語を含むメソッド名。個人的には、私はそのような「リテラル」メソッド名の大ファンではなく、できる限り明確でありながら、簡潔であることを好みます。私にとって、 "a"、 "an"、および "the"のような単語は、メソッド名では単純に不自然に見えるだけで、有用なものを追加することなく、メソッド名を不必要に長くします。前の例では、次のメソッド名を使用します。 UploadFileToServer CreateTemporaryFile WriteOutRecord ResetSystemClock 私の経験では、これはより長い名前を書き出す他のアプローチよりもはるかに一般的ですが、私は両方のスタイルを見て、これら2つのアプローチに対する他の人々の考えを知りたいと思っていました。 だから、あなたは「散文のように読めるメソッド名」キャンプか「悪い意味の外国語から英語への翻訳のように大声で読むメソッド名」キャンプにいますか?

6
高品質のコードを促進および奨励するにはどうすればよいですか?
私は4人のチームの小さなアウトソーシング会社でiOS開発者として働いています。私と私と他の2人の開発者が入社する数年前に開始したプロジェクトに取り組んでいます。それ以前は、プロジェクトはほとんど1人で行われていました。 私がプロジェクトに取り組み始めたとき、それは完全な混乱でした。多くのコードの繰り返しがありました。同じ500のコードが、わずかなバリエーションで20の異なるファイルに対応しているのを見ました。さらに、それは正確に組織化されていませんでした:すべてのUI作成コードは、View Controllerでロジックと一緒に混合されました。 あちこちでリファクタリング、コードの冗長部分の排除、プロジェクトのファイル構造の改善などに最善を尽くしました。前の開発者はこれらすべてを本当に気にしていないか、経験がないと感じました。数か月の間、私は一人でかなり大きな機能に取り組んだことがありました。この機能の性質上、アプリ全体で多くのコードに触れる必要があったため、いくつかの改善を試みました。 他の開発者がプロ​​ジェクトに参加したとき、彼らは異なるコーディングスタイル(時には完全に異なるスタイル)を使用し、プロパティアクセサーなどの最新の言語機能を使用しないことに気付きました(これはObjective-Cの比較的新しい機能です)。フレームワークの類似の機能を使用する代わりに、独自の自転車を発明したり、他のプログラミング言語や学習したパターンをコードベースに転送したりすることもありました。多くの場合、悪い英語のためにメソッドや変数に適切な名前を付けることができません(Objective-Cは長い名前を作成する言語です)。 IDE用でない場合は、インデントや書式設定を一切行わずにすべてのコードを記述すると思うことがあります。 基本的に、私は彼らが書いたコードが嫌いです。フォーマット/構成が不適切で、プロジェクトの他の部分とは根本的に異なる場合があります。彼らがスパゲッティを私の作品に追加すると、とても気分が悪くなり、仕事の気分や生産性に影響します。 学習することや気にしないことはますます難しくなっているように感じます。彼らは彼らから求められていることをして、家に帰るだけです。私は機会があったときに彼らにいくつかのヒントを与えようとしました(例:彼らのPRにコメントしたり、GitHubでコミットします)。私はかつて、既存のコードの大部分のコーディングスタイルとフォーマットに従うようにきちんと要求しました(残念ながら、正式なコーディングスタイルのドキュメントはありません)。しかし、うまくいきませんでした... 「悪い企業文化」や「経験の浅い卒業生」などに焦点を合わせずにこの状況に対処し、実際に状況を改善し始めるにはどうすればよいでしょうか。

4
ASP.NET Web APIソリューションでAngularアプリを配置する場所は?
私はグリーンフィールドアプリを開始しています。ASP.NET(4.6)とAngular 2を使用したいと思います。バックエンドについては、Visual Studioでプロジェクトを作成しましたが、Angularアプリをどこに配置するのか迷っています。私は本当にフロントエンドにnpmとnode-toolsを使用したいのですが、最終的には同じAzure App Serviceインスタンスでホストされ、Angularアプリdomain.com/とその下のapi domain.com/api/などがあります。 Visual Studioでアプリを分離するにはどうすればよいですか?Angularアプリは独自のプロジェクトに含めるべきですか?APIと同じプロジェクトにAngularアプリを使用する必要がありますか?nugetや他のVSツールを使いたくない場合でも?(フロントエンドの場合、VSは多かれ少なかれ見栄えのするコードエディターになります)。この組み合わせのベストプラクティスは見つかりませんでした。

3
Cの異なる行に関数タイプとメソッド名を配置する理由
私は会社に入社したばかりで、最初のコードレビューでのスタイルコメントの1つは、戻り値の型とメソッド名を別の行にする必要があるというものでした。たとえば、これ void foo() { } これであるべき void foo() { } 私は常に最初のスタイルを使用してきましたが、人々が2番目のスタイルを使用するのは個人的な好み以外の理由があるのではないかと考えていましたか?最初のものは読みやすさを害するとは思わない。Cプログラマーや大規模なオープンソースプロジェクトでは、一方が他方よりも一般的ですか?
16 c  coding-style 

5
if条件付きでのset.add()のブール戻り値?
セットクラスのadd演算子は、ブール値を返します。ブール値は、追加する要素がまだ存在しない場合はtrue、そうでない場合はfalseです。書いています if (set.add(entry)) { //do some more stuff } きれいなコードを書くという点で良いスタイルと考えられていますか?あなたは一度に2つのことをするので、私は疑問に思っています。1)要素を追加し、2)要素が存在したかどうかを確認します。

6
ソースコードの記述中に80文字の制限のベストプラクティスに従う方法
だからあなたが知っているように言ってベストプラクティスがあります ソースコードの行を80文字に制限します。 2つのリンクがあります。 80文字がコード幅の「標準」制限であるのはなぜですか? ワイドスクリーンモニターの時代には、80文字の制限がまだ関係していますか? そして、このベストプラクティスを検索すれば、もっとうまくいくと思います。 しかし、これは非常に難しいと思います。サンプルの例を次に示します。 public class MyClass { public void myMethod() { final Map<String, List<MyInterfaceHere>> myReference したがって、各クラスと各メソッドと各ステートメントをインデントします。 そして、「myReference」にある最後の「e」の終わりまでに、すでに列60にいます。 私は実際にコンストラクタを呼び出して、私が持っている参照にオブジェクトを割り当てるために20個のスペースが残っています。 私はこれが本当に良く見えることを意味します: public class MyClass { public void myMethod() { final Map<String, List<MyInterfaceHere>> myReference = new HashMap<String, List<MyInterfaceHere>>(); ここでのベストプラクティスは何ですか?

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