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

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

8
チーム内で競合するJavaスタイル
私は6週間の期限があるJava開発チームの一員です。そのため、大量のコードを非常に迅速に作成する必要があります。ただし、開発チームにはさまざまなスタイルのコーディングがあります。名前の規則から抽象化の方法まで、すべてがチームによって異なります。Javaの「標準」を規定するドキュメントを知っている人はいますか? 明確にするために、たとえば変数や関数の適切な命名規則を規定する組織があるかどうか疑問に思っていました。このような短い期限では、お互いのコードを理解しようとする時間を費やすことができないため、これは最重要事項です。

9
水平にスクロールする必要があると、コードが読みにくくなりますか?
まあ、それは?それは悪い習慣と考えられていますか? IMO、読みにくい。私は右にスクロールし、左、右、左などにスクロールするのが嫌いです。それはコーディングをより苦しくし、時々私を混乱させます。 たとえば、長い文字列をコーディングするときはいつでも、次のことを行います... bigLongSqlStatement = "select * from sometable st inner join anothertable at" + "on st.id = at.id" + "and so on..." + "and so on..." + "and so on..."

5
コーディング標準の均一性が高すぎる可能性はありますか?
均一性が大きすぎるということはありますか?私が仕事をする場所には、命名規則、アーキテクチャ、活用するフレームワークなどを含む標準があります。しかし、最近、より多くのスタイルを検討することについて多くの批判がありました。 たとえばif、複数行と1行でステートメントを記述する場合、たとえばの??代わりにc#null結合演算子を使用して== null、インデントなどのスペースの量を指定します。 私はこれが個人的なスタイルの選択にもっと入り始め、チームや会社全体で均一である必要はないようです。ある人が他の人がより明確に読むと考えるものはそうではないかもしれません。この「余分な」均一性に価値はありますか?

5
コーディング標準の進化、それらにどのように対処しますか?
既存のコードベースのプロジェクトのコーディング標準/スタイルガイドの進化にどのように対処しますか?あなたのチームの誰かがプログラミング言語でオブジェクトのインスタンス化のより良い方法を発見したとしましょう。古い方法が悪いことやバグがあるということではなく、新しい方法のほうが冗長でなく、はるかにエレガントだと感じるだけです。そして、すべてのチームメンバーが本当に気に入っています。既存のコードをすべて変更しますか? コードベースが約500.000行以上のコードであるとします。それでも既存のコードをすべて変更しますか?それとも、新しいコードのみを新しい標準に準拠させますか?基本的に一貫性を失いますか? プロジェクトのコーディング標準の進化にどのように対処しますか?

3
Enum、Abstractクラス、およびStructsのプレフィックスを付けないのはなぜですか?
C#コミュニティは、最も経験の浅いプログラマーでさえ使用することを知っているインターフェイスを示すために、「I」プレフィックスを広く使用しています。 列挙型、抽象クラス、または構造体の接頭辞を付けないのはなぜですか(おそらくそれぞれ「E」、「A」、「S」を使用)。 たとえば、すべての抽象クラスに「A」のマークを付けた場合、そのタイプに関する貴重な情報が提供されますが、それは推測できますが、すぐにはわかりません。 私はこの変更を支持していないことに注意してください。私たちがこのように物事をしない理由を理解しようとしているだけです。 このスレッドは、「I」プレフィックスを使用する理由に答えますが、他のプレフィックスを使用しない理由には答えません。

3
ステートレスについての意味的な手がかりとしての「静的」?
私は最近、Javaの中規模プロジェクトをリファクタリングして、戻って単体テストを追加しました。シングルトンとスタティックをモックするのがどれほど苦痛であるかに気付いたとき、私はついにこれまで読んでいたものをついに「手に入れました」。(私は経験から学ぶ必要がある人の一人です。まあ。) ですから、Springを使用してオブジェクトを作成し、それらをワイヤリングするようになったのでstatic、左右のキーワードを取り除きました。(潜在的にそれをモックしたい場合、Math.abs()と同じ意味で本当に静的ではありませんよね?)問題は、staticメソッドが依存していないことを示すために使用する習慣になったことです任意のオブジェクト状態。例えば: //Before import com.thirdparty.ThirdPartyLibrary.Thingy; public class ThirdPartyLibraryWrapper { public static Thingy newThingy(InputType input) { new Thingy.Builder().withInput(input).alwaysFrobnicate().build(); } } //called as... ThirdPartyLibraryWrapper.newThingy(input); //After public class ThirdPartyFactory { public Thingy newThingy(InputType input) { new Thingy.Builder().withInput(input).alwaysFrobnicate().build(); } } //called as... thirdPartyFactoryInstance.newThingy(input); だから、ここが微妙な感覚になります。古い方法が好きだったのは、Math.sin(x)と同様に、ThirdPartyLibraryWrapper.newThingy(x)が毎回同じ方法で同じことをしたことを大文字が教えてくれたからです。オブジェクトに要求することをオブジェクトがどのように行うかを変更するオブジェクトの状態はありません。ここで私が検討しているいくつかの可能な答えがあります。 誰もこのように感じていないので、私には何か問題があります。たぶん、オブジェクト指向のやり方を実際に内部化していないだけかもしれません!たぶん私はJavaで書いていますが、FORTRANなどで考えています。(私がFORTRANを書いたことがないので、どれが印象的でしょう。) コードについての推論を目的として、不変性の一種のプロキシとして静的性を使用しているのかもしれません。そうは言っても、ステートフルなものとそうでないものを知るためにコードを維持するために、コードに手がかり はありますか? おそらく、良いオブジェクトのメタファーを選択した場合、これは無料で提供されるはずです。例えばthingyWrapper、Thingyそれ自体が可変である可能性のあるラップされた状態に依存していないように聞こえます。同様に、thingyFactoryサウンドは不変である必要がありますが、作成時に選択されるさまざまな戦略を持つことができます。


3
.equals()を使用して文字列変数を文字列リテラルと比較する場合、アイテムの順序に標準的な慣行はありますか?[閉まっている]
ここで何が尋ねられているかを伝えるのは難しいです。この質問は曖昧、曖昧、不完全、過度に広範、または修辞的であり、現在の形式では合理的に答えることができません。この質問を明確にして、再開できるようにするには、ヘルプセンターに アクセスしてください。 7年前に閉鎖されました。 それぞれに利点があり、違いを理解していますが、ベストプラクティス/標準プラクティスは何ですか?なぜ? 例えば ​​: "myString".equals(myStringVar) 潜在的なNPEを回避し、nullチェックを必要としません。(良いこと?) nullチェックが必要ないため、読みやすくなります。 nullが予期される値でない場合、プログラムは賢明でなくても壊れている可能性があります。 しかしながら myStringVar.equals("myString") nullが期待値である場合、nullチェックが必要です。(良いこと?) nullチェックで複合条件を乱雑にすることができます。 NPEが何かが壊れているかどうかを知らせることができます。 Javaで使用する標準と見なされるバリエーションはどれですか?

3
コーディング標準で回避できるバグ[終了]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 5年前に閉鎖されました。 コーディング標準がバグを減らすのに役立つという主張を裏付ける統計(または推定)を探しています。ハードナンバーはいいと思いますが、私はそれを見つけることをあまり見ていませんでした。さまざまなオープンソースプロジェクトのバグ追跡も検討しましたが、必要なものを見つけるのにあまり成功していません。誰かが私がこれを見つけることができるかもしれない場所を知っていますか?それとも、より良いコーディング標準で回避されたかもしれないバグがあったオープンソースプロジェクトに貢献している人はいますか?

9
コード文書の生産性の向上/損失に関する研究
多くの検索を行った後、ソフトウェア開発の世界で知られていると思われるものに関する基本的な質問に答えることができませんでした。 知られていること: 適切なコードドキュメント(Doxygenタグ、Javadoc、または単なるコメントの豊富さ)に厳格なポリシーを適用すると、コードの開発に必要な時間がオーバーヘッドになります。 だが: 徹底的なドキュメント(またはAPI)を持っていると、新しい開発者やベテランの開発者が機能を追加したり、バグを修正したりするときに生産性が向上(想定)します。 質問: そのようなドキュメントを保証するために必要な追加の開発時間は、将来の生産性の向上によって相殺されますか(厳密に経済的な意味で)? ケーススタディ、または導き出される結論を裏付ける客観的な証拠をもたらすことができる答えを探しています。 前もって感謝します!

12
ブール論理の保守性-ステートメントが必要な場合、ネストしますか?
これらのどれが保守性に優れていますか? if (byteArrayVariable != null) if (byteArrayVariable .Length != 0) //Do something with byteArrayVariable または if ((byteArrayVariable != null) && (byteArrayVariable.Length != 0)) //Do something with byteArrayVariable 私は2番目のものを読み書きすることを好みますが、そのようなことを行うと保守性が悪くなることを完全なコードで読んだことを思い出します。 これはif、最初の部分がfalseであり、すべての言語がそれを行うわけではない場合、2番目の部分を評価しないように言語に依存しているためです。(nullで評価された場合、2番目の部分は例外をスローしますbyteArrayVariable。) それが本当に心配なのかどうかわからないので、質問に対する一般的なフィードバックをお願いします。 ありがとう。

6
すべてのHTMLおよびCSS標準に厳密に従う必要がありますか?
数年前、私は自分がWeb開発者であり、基本的な3言語(HTML、CSS、JS)と多くのPHPを知っていると考えていました。単純なテキストから実際のWebサイトに移行することは、いわゆる「標準」が存在するために苦痛でしたが、当時はそれが途方もなく複雑でした。それはほとんどこれに要約されました(IE関連のものを除いて): 標準は、より簡単な方法で物事を行う古い方法を置き換えるためにあります。ただし、実際にいくつかのもの(たとえば、CSSベースのレイアウト全体)を実際に実装しようとすると、よりシンプルでまだ機能するソリューションを実行した場合、実際に実行するのに10倍時間がかかりました。同じようにレンダリングされる場合、ブラウザを変更すると10倍長くかかり、壊れるより複雑な例を使用する必要があるのはなぜですか?これにより、Freenode IRCの## php、## css、および## jsで多くの宗教的な議論が巻き起こり、実際に## cssから禁止されました。 私の質問:10倍長くかかっても、単純なものと同じ結果が得られる場合でも、すべての標準とコーディング規則に従う必要がありますか? ポーリングタグの場合、任意のサイズ(巨大または小)のウェブサイトを持っているあなたの人々は、ないあなたはすべての基準に従いますか?

5
文字列内にテキストマーカーを配置するのは悪いスタイルですか?代わりはありますか?
私は多くの操作を必要とする巨大な文字列を扱います。 たとえば、次のような文字列を生成します。 パート1 ボート セクションA プログラミング パート2 プログラミング用の分割ボート。 セクションAA セクションSQLエントリ。 文字列が大きすぎて手動ですべての部分をチェックすることはできません。今、私はする必要がありsplit、このstring中stringlistのセクションおよび部品によって。2つのオプションを考えることができます。 正規表現: QStringList sl = s.split(QRegularExpression("\n(?=Part [0-9]+|Section [A-Z]+)")); それはうまくいくように見えますが、時々例外が通り抜けます(IE:Section SQL Entries誤って分割されます) それ以外の場合は、最初の文字列を生成するときにマーカーを配置できます。 🚤💻パート1 ボート 🚤💻セクションA プログラミング 🚤💻パート2 プログラミング用のパーティショニングボート。 🚤💻 セクションAA セクションSQLエントリ。 つまり、文字列の分割が簡単になります。 QStringList sl = s.split("🚤💻")); これらのどちらも良いスタイルやプログラミングの実践ではないことはわかりますが、この時点まで、それについては議論しておらず、代替案も見つけていません。 あなたが私のプロジェクトマネージャーである場合、これらの方法のいずれかを受け入れますか? そうでない場合、私がベストプラクティスとして何をすればよいと思いますか?

4
多くの異なるステータスを表す整数コードを返す関数を作り直す
私は、以下の短いサンプルを含めたいくつかのひどいコードを継承しました。 この特定のアンチパターンに名前はありますか? これをリファクタリングするための推奨事項は何ですか? // 0=Need to log in / present username and password // 2=Already logged in // 3=Inactive User found // 4=Valid User found-establish their session // 5=Valid User found with password change needed-establish their session // 6=Invalid User based on app login // 7=Invalid User based on network …

3
ソースコードはUTF-8である必要がありますか?
多くの場合、コードの形式を実際に選択しないと思います。つまり、過去の私のツールのほとんどが私のために決定したということです。または私は本当にそれについてさえ考えていません。先日WindowsでTextPadを使用していて、ファイルを保存していると、ASCII、UTF-8 / 16、Unicodeなどについてプロンプトが表示されました... 書かれたコードのほとんどすべてがASCIIであると想定していますが、なぜそれがASCIIである必要があるのですか?ソースコードに実際にUTF-8ファイルを使用する必要がありますか。その理由は何ですか。これは多言語チームに役立つかもしれないと思います。多言語チームが変数/関数などに名前を付ける方法に関連する標準はありますか?

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