タグ付けされた質問 「code-quality」

高品質のコードを書くためのベストプラクティスに関する質問。

6
アプリケーションをスケーラブルにするものは何ですか?
求人情報では、応募者が「スケーラブル」な申請書を作成した経験を持っている必要があります。アプリケーションをスケーラブルにする理由は何ですか?また、コードが何百万人ものユーザーに対応できることをどのように知るのですか この質問を表現するより良い方法は、スケーラビリティを念頭に置いてコードを作成するにはどうすればよいでしょうか そのため、コードは後から考えるのとは対照的に、導入から拡張可能です。特定の設計手法はありますか?それとも、単に仕事に適したアルゴリズムを選ぶだけの問題ですか?



14
バグを修正するか、顧客がバグを見つけるのを待ちますか?
他の人はバグを見つけたときに修正しますか、それともクラッシュ/データ損失/人が死ぬまで修正を待つのですか? 例1 Customer customer = null; ... customer.Save(); コードは明らかに間違っており、回避方法はありません。null参照でメソッドを呼び出しています。Saveインスタンスデータにアクセスしないため、クラッシュしません。静的関数を呼び出すようなものです。しかし、どこでも小さな変更があれば、クラッシュしないコードが突然クラッシュする可能性があります:クラッシュを開始します。 しかし、コードを修正することも考えられません: Customer customer = null; ... customer = new Customer(); try ... customer.Save(); ... finally customer.Free(); end; かもしれない紹介クラッシュ。完全に網羅された単体テストと手動ユーザーテストでは発見されなかったもの。 例2 float speed = 0.5 * ((G * mass1 * mass2) / R) * Pow(time, 2); 物理学を知っている人は、それが分母のR 2であることを認識するでしょう。 コードが間違っている、それは絶対に間違っている。また、速度を過大評価すると、レトロロケットの発射が早すぎて、宇宙船のすべての乗員が死亡します。 しかし、速度を過大評価して別の問題を隠している可能性もあります。シャトルの動きが速すぎるとエアバッグが展開できません。突然コードを修正した場合: float speed = …
35 code-quality  bug 

14
多くの開発者がパフォーマンス、可読性、保守性が共存できないと考えるのはなぜですか?
この質問に答えながら、なぜ多くの開発者が優れた設計がパフォーマンスを考慮すべきではないと考えるのか疑問に思い始めました。なぜなら、そうすると読みやすさや保守性に影響するからです。 優れたデザインでは、執筆時にパフォーマンスも考慮され、優れたデザインの優秀な開発者は、可読性や保守性に悪影響を与えることなく効率的なプログラムを作成できると考えています。 極端な場合があることは承知していますが、なぜ多くの開発者が効率的なプログラム/設計が読みやすさや保守性の低下をもたらすと主張するのでしょうか?

7
ライブラリを使用せずにタスクを実行できる場合、ライブラリを使用する必要がありますか?[閉まっている]
私は、オープンソースのJavaScriptプラグインを使用してタスクを遂行できる状況にあります。しかし、それを使用しようとしたとき、私はすでにやったことの多くを再設計する必要があることに気づきました。きれいなコードで同じタスクを達成できるのに対し、自分で作成でき、これまでに行ったことを変更する必要はありません。 とにかく、このような状況ではライブラリを選択する必要がありますか(コードの品質を向上させるためなど)。

10
メソッド変数としてメンバー変数を渡す
プロジェクトで、次のようなコードを見つけました。 class SomeClass { private SomeType _someField; public SomeType SomeField { get { return _someField; } set { _someField = value; } } protected virtual void SomeMethod(/*...., */SomeType someVar) { } private void SomeAnotherMethod() { //............. SomeMethod(_someField); //............. } }; これが悪いコードであることをチームメートに納得させるにはどうすればよいですか? これは不必要な複雑さだと思います。既にアクセスできるのに、メソッド変数としてメンバー変数を渡すのはなぜですか?これもカプセル化の違反です。 このコードに他の問題がありますか?

9
ユニットテストを書く前にコードを書くことの欠点は何ですか?
最初に単体テストを作成してからコードの作成を開始することをお勧めします。しかし、私にとっては、逆の方がはるかに快適だと感じています-実際にコードを書いた後、より明確になったと感じているので、コードを書いてからユニットテストを書いてください。コードを作成してからテストを作成すると、テスト可能なデザインの作成に専念しても、コードを少し変更してテスト可能にする必要がある場合があります。一方、テストを作成してからコードを作成すると、コードが形成されるときにテストが頻繁に変更されます。 テストの作成を開始してからコーディングに進むための多くの推奨事項がありますが、逆にコードを作成してから単体テストを行う場合のデメリットは何ですか?



12
コードレビューは良い習慣ですか?
私が働いている会社が新しいマネージャーを雇ったとき、彼らは私たちにすべての会議で誰かのコードを概観するように提案しました。私たちは2週間ごとに会議を開催しているため、開発者の1人がそのコードをプロジェクターに表示するたびに、他の開発者がそれについて議論します。 これは素晴らしいことだと思いました。各開発者はコードを書く際により慎重になり、経験をよりよく共有することができます。しかし、どういうわけか私たちはこれを忘れて、申し出は申し出のままでした。 これにはどのような利点があり、欠点はありますか?

16
シンプルさは常に可読性を向上させますか?
最近、私は会社のために一連のコーディング標準を開発していました。(私たちは会社の新しい言語に分岐する新しいチームです。) 最初のドラフトでは、コーディング標準の目的を、読みやすさ、保守性、信頼性、およびパフォーマンスの向上として設定しました。(書き込み可能性、移植性、コスト、以前の標準との互換性などを無視しました。) このドキュメントを書いているときの私の目標の1つは、コードのシンプルさのアイデアを推し進めることでした。アイデアは、1行につき1つの関数呼び出しまたは操作のみが必要であるというものでした。私の希望は、これにより読みやすさが向上することでした。以前の言語から引き継いだアイデアです。 ただし、このプッシュの背後にある仮定に疑問を投げかけました。 シンプルさは常に読みやすさを向上させますか? より単純なコードを記述すると読みやすさが低下する場合はありますか? それは明らかなはずですが、「シンプル」というのは「書くのが簡単」という意味ではなく、1行あたりの処理が少ないことを意味します。

13
職に就く前に、潜在的な雇用主のコードの品質をどのように確認しますか?[閉まっている]
会社で働き始める前の私の経験では、コードベースを見る機会がありません(私は尋ねましたが、機密性の理由から、誰もが常にノーと言っていました、それは公平だと思います)。コードがどのような状態にあるかを知るために尋ねる最も重要な質問だと思いますか(結局、犬なら、毎日歩かなければならない貧しい不幸な人たちになるでしょう)? 更新: チェックリスト:尋ねる。 彼らがコードベースについてどう思うか。そして、あなたがそうするとき、表情とそれらが反応するのにかかる時間に細心の注意を払ってください。[アノン] 会社のCMMレベル[DPD]とは何ですか(レベル5が逆に聞こえるとしたら[Doug T]) 彼らが使用するライフサイクル[DPD](「アジャイル」と聞いた場合、鋭い質問をして「アジャイル」とは「アジャイル」または「カウボーイコーディング」を意味するかどうかを判断しようとします[Carson63000]) コード品質を評価するためにどのツールを使用していますか?[DPD] 開発に使用するツールは何ですか?[DPD](リファクタリングツールと継続的なビルドサーバーを探します) どのソースコード(バージョン管理)システムを使用しているのか、そしてフォローアップとして、なぜ使用するのかを尋ねることです。[ザカリーK]。 テスト手順はどのようなものですか?[Karl Bielefeldt](特にモックフレームワークを使用し、NUnit / JUnitのような確立されたフレームワークを通じて徹底的な自動化されたユニットテストに重点を置くチームを探します。テストが堅実なソフトウェア開発に不可欠であると考えていない場合は注意してください。専用のテスターを持つチームを探してください。 新しい開発者にはどのような割り当てが与えられますか?経験豊富な開発者ですか?[カールビーレフェルト] プロジェクトで何人が働いていますか?[カールビーレフェルト] リファクタリングは許可されていますか?励まされますか?[カールビーレフェルト] どのような品質関連のプロセスまたはアーキテクチャの変更が検討中ですか、または最近行われましたか?[カールビーレフェルト] 個人はモジュールに対してどの程度の自律性を持っていますか?[カールビーレフェルト] 新しいプロジェクト(グリーンフィールド開発)またはレガシープロジェクト(ブラウンフィールド開発)を開発しますか?(グリーンフィールドの開発は一般的にもっと楽しく、他の誰かのミスで片付けないので問題が少ないです)。 組織またはチームの従業員の離職率は高いですか?(多くの場合、これはコードの品質が低いことを示しています)[M.Sameer] 独自のプログラミングの問題。しかし、ジャークのように見えることは避けてください。[キラキラ] 開発者はどのように協力し、チーム間で知識をどのように共有しますか?(これはあなたの性格と一致するはずです;ソロとペアの作品の混合はおそらくあなたの社会的ニーズに一致する比率で最高でしょう) それらのデータベースは、第3正規形(3NF)にどれだけ近いか、そしてそれがどこで、なぜそれから逸脱するか?(彼らが「3NF ???」と言ったら、去る。そうでないなら、そうでない理由が十分あるかもしれないのなら、彼らが何であるかを見つけなさい)。 注: 約1週間後、コミュニティはそれが最良のものであると考えるため、Anonの回答を受け入れました。しかし、私は誰もが言いたいことがあると思います。

5
同じファイルに複数のクラスが定義されているとPythonicと見なされますか?
初めてPythonを使用して、同じファイルに複数のクラスを記述することになりました。これは、クラスごとに1つのファイルを使用するJavaなどの他の言語とは対照的です。 通常、これらのクラスは1つの抽象基本クラスで構成され、1-2の具体的な実装が使用されますが、使用方法はわずかに異なります。以下にそのようなファイルを1つ投稿しました。 class Logger(object): def __init__(self, path, fileName): self.logFile = open(path + '/' + filename, 'w+') self.logFile.seek(0, 2) def log(self, stringtoLog): self.logFile.write(stringToLog) def __del__(self): self.logFile.close() class TestLogger(Logger): def __init__(self, serialNumber): Logger.__init__('/tests/ModuleName', serialNumber): def readStatusLine(self): self.logFile.seek(0,0) statusLine = self.logFile.readLine() self.logFile.seek(0,2) return StatusLine def modifyStatusLine(self, newStatusLine): self.logFile.seek(0,0) self.logFile.write(newStatusLine) self.logFile.seek(0,2) class GenericLogger(Logger): def …

11
友達と小さなプロジェクトをいつ放棄するかを決定する方法に影響する要因は何ですか?[閉まっている]
私は最近、厳しい状況に陥っています。ほぼ8か月間、プログラミング仲間とのゲームに取り組んでいます。私たちは両方とも昨年の8月頃にプログラミングの初心者としてスタートしました。彼は2年目のCS学生であり、私は業界のITサポート技術者であり、多数の書籍とオンラインサブスクリプションを持つ独学のプログラマーです。 私が常に見てきた問題は、コードの塊を書き出すと、多くの場合、一緒に少しハッキングされ、多くの失敗があり、それが私たちの新しいコンセプトである場合、素朴なソリューションでいっぱいです。これは問題ありません。学習中です。最初のパスまたは2回目のパスで、両方のコードが少しハッキングされることを期待しています。問題は、ハッキングされたこれらの動作を実際に修正およびリファクタリングするときに発生します。 私のパートナーは、動作を開始した瞬間にエラーを見ることを露骨に拒否して、彼の新鮮な一緒に行動を保持します。構造の一部からほぼ完璧を主張して、コメントがあり、適切な名前のメソッドとフィールドがあっても、使用することさえできません。どんなに一生懸命努力しても、動作を完全に破壊することなく、それ以上の変更や動作の拡張を妨げる明白な欠陥を彼に見せることはできません。それらはすべて同じクラスに属する可能性があります。ハッキングされたソリューションは、常にハッキングされたままであり、設計が十分に検討されていないため、最初に考案およびテストされたときの設計はそのままです。 新しいコードを自分で作成するのと同じくらい多くの時間をベビーシッターに費やしています。私のパートナーは今夜それを失い、ベンチマーク、一般的な慣行、反論できない証拠に関係なく、彼のコードは彼が最初に作った方法のままであることを明らかにしました。あなたが何かをすることを避けたい理由について本全体が書かれていたとしても、彼はそれが単なる誰かの意見であると主張する彼らの妥当性を認めることを拒否するでしょう。 私は私たちのプロジェクトに強い関心を持っていますが、パートナーと一緒に仕事を続けられるかどうかはわかりません。私には3つの選択肢があります。 コンパイルの時点を過ぎて機能するコードベースを気にするのをやめ、かろうじてリンプしている動作を維持および解析しようとすることに対処します。物事が真剣に壊れ始めたら、彼はそれを見て、根本的に欠陥のあるデザインにただ絆創膏をかける以上のことをしようとするでしょう。 他のはるかに有能な個人によって10年前に見つけられた問題についての無限の議論を続けてください。 このプロジェクトでのプログラミングを停止し、コードの10,000行近くを放棄し、設計に時間を費やす無数の時間を費やして、自分で新しいプロジェクトを見つけてみてください。 この人とこのプロジェクトを続ける価値があるかどうかを判断するには、どのようなアプローチを取ることができますか?または、どの要因が私の決定に影響を与えるべきですか?私たちは多くのコードを書きましたが、必要がない限りこれをあきらめたくありません。

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