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

コーディング標準またはコーディング規約は、ソフトウェアプロジェクトでのコード生成のプロセスを管理するために設計された一連のルールまたはガイドラインです。それらは通常、業界のベストプラクティスまたは一般に受け入れられている規則に基づいています。これには、命名規則、スタイル、禁止されている機能などが含まれます。

4
これは(もともと)どこにありますか?:「ソフトウェアのライフタイムコストの80%はメンテナンスに費やされます」[終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 Sun Javaコーディング規約ドキュメント(ここ:http : //www.oracle.com/technetwork/java/codeconv-138413.html)には、次のように記載されています。 「ソフトウェアのライフタイムコストの80%はメンテナンスに費やされる」 この統計の出所を知っている人はいますか?アサーションを疑うことはありませんが、私は帰属なしで統計を作成することもできます。他のステートメントの基礎として使用し始める前に、これがどこから来たのかを知りたいのです。

2
ソースコードで完全修飾クラス名を使用する理由は何ですか?
私は最近、開発者がソースコードで完全修飾クラス名とインポートしたクラス名の両方を使用するコードに出くわしました。 例: import packageA.Foo; public class Example { public packageB.Bar doSomething() { final Foo foo = new Foo(); ... } } ソースコードのクラスに完全修飾名を使用したい唯一の理由は、2つの異なるパッケージに同じクラス名があり、2つを区別するために完全修飾名が必要な場合だと私は思っていました。私が間違っている?

2
関数の出力を確認するために新しい変数を作成することは良い習慣ですか?
次の2種類の実装を検討してください。 public int add(int x, int y) { return mysteriousAdd(x, y); } public int add(int x, int y) { int output = mysteriousAdd(x, y); return output; } 私の同僚は、デバッグ中にmysteriousAdd返される変数を見ることができ、スタックに追加の変数を作成するのはそれほどオーバーヘッドがないため、2番目の実装の方が優れていると述べています。今日のほとんどのコンパイラーは、追加の変数なしでデバッグ中に関数の応答を示すことができ、スタックでの追加の変数の作成も回避しているため、最初の実装の方が適切であり、彼のポイントはそれほど有効ではないと思います。 スタックでの参照変数の作成は安価な操作ですか?上記の2つの方法のうち、コーディングに適しているのはどれですか。その理由は何ですか。

3
ループ内にネストされている場合、try-catchステートメントのネストは依然としてコードの匂いですか?
try-catchステートメントをネストするとコードの臭いになることがよくあると聞いたので、この状況が例外かどうか疑問に思います。そうでない場合、リファクタリングするためのいくつかの良い方法は何でしょうか? 私のコードは次のようになります: try{ X x = blah; otherStuff; for (int i = 0; i < N; i++){ try{ String y = Integer.toString(i); f(x); } catch(Exceptions1 e1){ System.err.println(... + y + ...); System.exit(0); } } catch(Exceptions2 e2){ ... } Exceptionsここではマルチキャッチを示すために使用しています。 e2初期化xおよび実行によってスローされた例外をキャッチするために使用されますotherStuff。理想的には、2つの行だけをtry-catchで囲んでいたはずですがx、ループ内で使用し、try-catchの外側でnullに初期化することによって引き起こされる「未使用の割り当て」警告を回避したいと考えました。 e1e2反復の詳細に関する情報をユーザーに提供したいため、ループ内にキャッチブロックが必要だったため、マルチキャッチされませんでした。

3
関数が新しいポインタを返すことを示す標準的な方法はありますか?
クラスが所有するオブジェクトの構築を別の関数に委任したい場合があります。何かのようなもの Vertex* new_vertex(const Options& options) { // do stuff... return new Vertex(...); } この関数は、を所有するクラス内でのみ使用することを目的としていVertexます。明らかに、この関数はメモリリークを引き起こす混乱を引き起こす可能性があるため、できるだけ明確にしたいと思います。そのような関数の命名規則はありますか?

1
スクリプト言語のネイティブ拡張-名前の衝突を回避し、他の人の名前空間を混乱させる
小さなスクリプト言語を開発し、最初のネイティブライブラリバインディングの作成を開始しました。これは、スクリプト言語のネイティブ拡張を書いているのは事実上初めてなので、概念的な問題に遭遇しました。 この言語から使用できるように、一般的なライブラリのグルーコードを書きたいと思います。私が書いたエンジンの設計により、これはstruct、仮想マシン、および関数ポインタ。 したがって、ネイティブバインディングは実際には単なるグローバル配列変数であり、ここで明らかに(できれば適切な)名前を付ける必要があります。Cでは、myscript_parse_source()またはのように、関数名の前にカスタムプレフィックスを付加することにより、自分の関数を「名前空間」に配置するのが慣用的myscript_run_bytecode()です。カスタム名は、理想的には、それが属しているライブラリの名前を表すものとします。ここで混乱が生じます。 のバインディングを書いているとしましょうlibcURL。この場合、次のように拡張ライブラリを呼び出すのが合理的curl_myscript_bindingです。 MYSCRIPT_API const MyScriptExtFunc curl_myscript_lib[10]; しかし、これはcurl名前空間と衝突します。(私はそれを呼び出すことさえ考えましたcurlmyscript_libが、残念ながらlibcURLはcurl_プレフィックスのみを使用していません-パブリックAPIにはCURLCODE_*やなどのマクロが含まれているCURLOPT_*ため、これにより名前空間も乱雑になると思います。) もう1つのオプションはmyscript_curl_lib、それをとして宣言することですが、バインディングを作成するのが私だけである場合にのみ有効です(自分の名前空間で何をしているのかわかっているため)。他のコントリビューターが独自のネイティブバインディングを追加し始めるとすぐに、myscript名前空間が乱雑になります。(私はいくつかの調査を行いましたが、たとえば、Perl cURLバインディングはこのパターンに従っているようです。それについて私が何を考えるべきかわかりません...) では、変数に名前を付けるにはどうすればよいでしょうか。従うべき一般的なガイドラインはありますか?

2
大文字と小文字の区別が異なる複数の言語を操作するときはどうしますか?
Djangoを使用してwebappを作成しています。変数の命名に関するPythonの規則はlowercase_with_underscoresですが、JavaScriptの規則はcamelCaseです。さらに、多くの人がCSS識別子に小文字のハイフンを使用するのを見てきました。 他の2つが他を推奨している場合でも、必要に応じて3つすべての命名規則を使用するか、1つを選んでそれを使用することをお勧めしますか?前後に切り替えることは大きな問題ではありませんが、それでも精神的なオーバーヘッドになる可能性があります。

11
コード標準を無視できるとしたら、いつですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 5年前休業。 私の会社では、データベースを処理するすべてにストアドプロシージャを使用することを決めました(生のSQL以外に他の方法を知らなかったため)。最近、データベースの値を取得する必要があるハック修正を追加する必要がありました。これは単一のテーブルからの単一の値なので、インラインSQL(もちろんパラメーター化)として記述しました。アプリケーションの単一の部分でkludgeとして使用されている1行のコードのストアドプロシージャ。 もちろん、私は今それを修正するように言われました、そして、データベースに関連する何かのために保存されたProcを使用するだけです。これは、常識を使うのではなく、盲目的にドグマをたどるように少しだけ感じすぎます。誤解しないでください。私はコーディング標準の目的を理解していますが、意味がないときに標準を無視することの賛成者でもあります。単なる盲目的にゴスペルであるかのようにフォローするだけではありません。

6
IEで別のJavaScriptを実行することは悪い習慣と考えられていますか
IEで別のJavaScriptを実行することは悪い習慣(そしてどれほど悪いこと)と考えられていますか?現在、JavaScriptを書いていて、IEの癖を回避する簡単な方法は、ブラウザーのバージョンを確認して別のコードを実行することです var browserName = navigator.appName; if (browserName == "Microsoft Internet Explorer") { //Do some stuff } else { //Do other stuff } 高速でうまく機能しますが、コードの重複につながり、「ハック」と感じます。

1
Webプロジェクトのパフォーマンス、セキュリティ、その他の標準を測定する無料のツールはありますか?
Webアプリケーションプロジェクトの標準を測定するためのオープンソースツールはありますか?プロジェクトを確認したい: セキュリティリークの可能性(SQLインジェクションなど) パフォーマンス 安定性(高並行環境で) およびその他の品質指標。

8
チームにコーディング標準をどのように導入すればよいですか?
まず少し背景:私の現在の開発マネージャーは今週の終わりに別の機会を得て、4人のフルタイムの開発者、非常勤のインターン、およびWebデザイナー(技術的にはAppDevではなくマーケティングの一部です)を残します。現時点では、新しいマネージャーの昇進や採用は行っていません。 以前のマネージャーは、順守するための一連のコーディング標準を思いつくために時間を費やすことは決してありませんでした(これを全体的に見ると、この仕事での1周年は2週間で、標準について彼と話していました始めた)。このため、4人の開発者全員が独自の方法でコードを記述しています。一部の人は.NETのMicrosoft命名規則に従い、一部はハンガリー語の表記法を使用し、一部は混合(例:混合PascalCaseとcamelCaseパラメーター名)を使用しています。あなたはそれが従うであろう標準に従ってコードファイルを開きます-一貫した唯一のものについては、中括弧が別々の行にあるということです。 私の3人の同僚のうち2人が私にアプローチして、私たちが使用し、前進させることができる標準のコーディングドキュメントを作成するように依頼しました(私は技術的には最も上級の開発者ではありませんが、4人目の開発者はここ数年ここにいる、2人の同僚そして、インターンは私にアドバイス/ガイダンスを求めますが、チームリードはありません)。私はこれをしばらくの間行うつもりでしたが、今や出発するマネージャーは常にそれをバックバーナーに置いていました。彼の出発は、今私たちが現在持っている急いでいるホッジポッジではなく、適切なソフトウェア環境を促進するために少し時間をかけて物事を正しく設定する機会を私たちに与えます。 これを行い、摩擦を起こさずにこの標準をチームに導入するにはどうすればよいですか?私が「引き継ぐ」ように見せたくないのですが、マネージャーの役​​職を申し出たとしても受け入れます。他の3人の開発者のうちの2人が私と一緒に1人を作成していますが、4人目(時間の真の「先輩」)はそれを受け入れる場合と受け入れない場合があります。私はMicrosoftの.Net規則(ハンガリー語表記を使用しないなど)から始めて、個人的な設定(_camelcaseフィールドなど)を追加し、ここで使用しない特定の奇妙な慣行を使用しないように呼びかけます(たとえば、開始時にアンダースコア)が、他に何を含める必要がありますか?私はそのような建築ガイドラインに入るためにしたくない意志 摩擦を引き起こし、それに準拠しない非常に大きくて臭い既存のコードベースがあり、リファクタリング戦略を立てる段階に近づいていません。 まとめると、基本的な命名規則を超えて、コーディング標準ドキュメントに何を含めればよいのか(例はすばらしいでしょう-そのようなドキュメントがどのようなものになるかの具体的な例を見つけることができませんでした)、そしてどのようにすべきですか新しい独裁者のように聞こえることなくそれを私のチームに提示します。

9
職場でクリーンなコーディングを促進するにはどうすればよいですか?
私は社内のアプリケーションで多くのレガシーJavaおよびRPGコードを使用しています。ご想像のとおり、コードの多くはさまざまなスタイルで記述されており、名前が不十分な変数、一貫性のない形式、および矛盾するコメント(存在する場合)のために、多くの場合読みにくくなっています。 また、十分な量のコードは堅牢ではありません。多くの場合、コードは熟練したプログラマーによって迅速に本番環境にプッシュされますが、新しいプログラマーによるコードは、IMOが不十分であるという「コードレビュー」によって妨げられます。(それらは通常、コードの深刻な批評よりも「うまくいく、大丈夫だ」という形をとります。)私たちはかなりの量の生産上の問題を抱えています。私は、元のデザインとテスト。 私はこの会社で約4か月働いており、私のコーディングスタイルについては2、3回褒められています。私のマネージャーはまた、標準よりもクリーンなコーディングのファンです。より良いスタイルとより防御的なコーディングを推進しようとするのは私の場所ですか、それとも私ができる限り最善の方法でコーディングすべきでしょうか?デバッグと変更時間を短縮できますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.