タグ付けされた質問 「programming-practices」

プログラミングプラクティスは、ソフトウェアの開発で一般的に使用される、またはあまり使用されないプラクティスです。これには、アジャイル開発、かんばん、コーディングのショートカットなどが含まれます。

9
コードレビューは良いことだと上司を説得するためのヒント[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 たとえば、プロジェクトでほとんど一緒に働いていない開発者が数人いる架空の会社で働いていて、上司がコードレビューに時間と費用の価値があるとは考えていなかったとします。 コードレビューの利点を描写するこのシナリオで提示できるさまざまな議論は何ですか?さらに、ここでのコードレビューに対する潜在的な議論は何であり、これらにどのように対抗できますか?

7
特定の値を文字列として保存するのは悪い習慣ですか?
それは非常に曖昧なタイトルですが、私はそれを表現するより良い方法を考えることができませんでした。しかし、ちょうど一例として、ゲーム内のキャラクターが動いている方向について考えてください。文字列を使用してからのようなことをするのはちょっと間違っているように感じif(character.direction == "left")ます。の代わりにを誤って使用しLeftたりl、他の何かを使用したりするなど、愚かなエラーの余地が多すぎるように思えleftます。私の疑いは正しいですか?もしそうなら、このような何かを達成するための好ましい方法は何ですか?

5
「深い構成階層」も悪くないですか?
「構成階層」が問題でない場合はおApびしますが、質問でそれが何を意味するのかを説明します。 「継承階層をフラットに保つ」や「継承よりも合成を優先する」などのバリエーションに遭遇していないオブジェクト指向プログラマーはいません。ただし、深い構成階層にも問題があるようです。 実験の結果を詳述するレポートのコレクションが必要だとしましょう: class Model { // ... interface Array<Result> m_results; } 各結果には特定のプロパティがあります。これらには、実験の時間と、実験の各段階からのメタデータが含まれます。 enum Stage { Pre = 1, Post }; class Result { // ... interface Epoch m_epoch; Map<Stage, ExperimentModules> m_modules; } いいですね 現在、各実験モジュールには、実験の結果を説明する文字列と、実験サンプルセットへの参照のコレクションがあります。 class ExperimentalModules { // ... interface String m_reportText; Array<Sample> m_entities; } そして、各サンプルには...まあ、あなたは絵を取得します。 問題は、アプリケーションドメインのオブジェクトをモデリングしている場合、これは非常に自然なフィットのように思えますが、結局のところ、a Resultは単なるデータの無意味なコンテナです!それのためにクラスの大きなグループを作成することは価値がないようです。 上記のデータ構造とクラスがアプリケーションドメインの関係を正しくモデル化すると仮定すると、深い構成階層に頼ることなく、そのような「結果」をモデル化するより良い方法はありますか?そのようなデザインが良いデザインかどうかを判断するのに役立つ外部コンテキストはありますか?

5
設計上のプログラミング言語は「クリーンコード」を強制できますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた3年前。 ですから、私は最初のプロジェクトをC ++でコーディングしていますが、単に機能するのではなく、コードを「クリーン」にするのにより多くの努力が必要と思われます。つまり、C ++が、いが動作するコードを「許可」しているように見えます。 考えさせられた プログラミング言語は、設計によってクリーンなコードを実施できますか?そのような言語はすでにありますか? また、これはプログラミング言語の開発/理論の設計原則としてどのように組み込まれていますか?どのような手段が使用されていますか?

8
プログラマが自分のコードを100%明確にしないことは時々ありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 私は熟練したプログラマーではないので、これが理由かもしれませんが、複雑なコード(最近作成したチェスゲームなど)を作成するたびに、プログラムを動作させるための正しいコードを書くことができることに気付きました。後で、または数秒後にそれを見つけますが! それだけでなく、コードについても考えない傾向があり、代わりに入力するだけです。たとえば、チェスのゲームでは、動きを処理するために5次元配列を使用することにしましたが、あまり意識せずにこれを実行できることがわかりました。しかし、停止して読み直したとき、5次元の概念全体を理解するのは困難であり、自分が何をしたのか、コード自体がどのように機能するのかを完全に理解するには数分かかりました。 プログラマーが複雑なコードを書くとき、彼らが何をしているのかを半分の時間で理解しないのは普通ですか?

5
矛盾するプログラミングのアドバイスを調整する:何かを機能させて反復するか、コーディングする前に実際に考える
私は、修士号の中間にある数年のプロの経験を持つ中級プログラマーです。プログラミングを学ぶ際に、一見矛盾していると思われる2つのアドバイスをよく耳にしました。 最初のアドバイスは、何かをすばやく動作させ、それがどのように機能するかを(プロトタイプまたは非公式のテストを介して)確認し、バージョンを改善し、再び機能する方法を確認し、再び改善し、それが完了するまでサイクルを繰り返すことでした。これは「スパイラル開発」と呼ばれることもあれば、「早期リリース、頻繁にリリースする」と表現されることもあります。 2番目のアドバイスは、コードを記述する前にプロジェクトを実際に検討することでした。 私は両方の方法で成功しており、それぞれの哲学に同意すると言うでしょう。 しかし、今では、完了方法がわからないはるかに複雑なプロジェクト(分散アプリケーションやパフォーマンス駆動型グラフィックプログラミングなど)に取り組み始めています。 これらのプロジェクトについてはどうすればいいですか? コーディングを開始して、(プラットフォーム/メソッド/言語/アーキテクチャ)を学習しながら学習しますか?それとも、IDEを開く前にコーディングを控えて大量の調査/読み取りを行いますか? これらの矛盾したプログラミングのアドバイスをどのように調整しますか?

4
プロパティのXMLドキュメントには「取得または設定..」が必要ですか?
C#でのXMLコメントのベストプラクティスの推奨事項を探しています。プロパティを作成すると、予想されるXMLドキュメントは次の形式になっているようです。 /// <summary> /// Gets or sets the ID the uniquely identifies this <see cref="User" /> instance. /// </summary> public int ID { get; set; } しかし、プロパティのシグネチャはすでにクラスの外部クライアントが使用できる操作を示しているため(この場合は両方getとset)、コメントはおしゃべりすぎて、おそらく次のようになります。 /// <summary> /// ID that uniquely identifies this <see cref="User" /> instance. /// </summary> public int ID { get; set; } Microsoftは最初の形式を使用しているので、暗黙の慣習のようです。しかし、私が述べた理由のために、2番目の方が優れていると思います。 この質問は建設的ではないとマークされるのが得意であると理解していますが、コメントしなければならないプロパティの量は膨大であるため、この質問にはここにある権利があると思います。 …

7
良いチームプレーヤーになるには?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 私は12歳からプログラミングを続けています(アセンブリからC ++、Javascript、Haskell、Lisp、およびQiまで)。しかし、私のプロジェクトはすべて自分のものです。 CSやコンピューターエンジニアリングではなく化学工学の学位を取得しましたが、今年の秋に初めて大規模なプログラミングプロジェクトを他の人々と一緒に作業することになり、準備方法がわかりません。私はこれまでずっとWindowsを使ってきましたが、このプロジェクトは非常に統一されたものになるので、最近、環境に慣れるためにMacを購入しました。 昨年、CSメジャーの両方である友人たちとハッカソンに参加できたのは幸運でした。しかし、彼らと一緒に仕事をするうちに、彼らのワークフローは私のものとは非常に異なっていることに気づきました。彼らはバージョン管理にGitを使用しました。一度も使用したことはありませんでしたが、それ以来、できることをすべて学びました。また、多くのフレームワークとライブラリを使用しました。ハッカソンにとってRailsがほぼ一晩であったことを学ばなければなりませんでした(一方、レキシカルスコーピングやクロージャが何であるかを知りませんでした)。私たちのコードはすべてうまく機能しましたが、彼らは私のものを理解していませんでしたし、私は彼らのものを理解していませんでした。 実際のプログラマーが日常的に行うこと-単体テスト、コードレビュー-への参照を聞きますが、私はこれらが何であるかについて漠然とした感覚しか持っていません。通常、私の小さなプロジェクトには多くのバグはありません。そのため、バグ追跡システムやそれらのテストは必要ありませんでした。 そして最後のことは、他の人のコードを理解するのに長い時間がかかることです。変数の命名規則(新しい言語ごとに異なる)は難しく(__mzkwpSomRidicAbbrev)、疎結合は難しいと感じています。だからといって緩くつなげないわけではありません-私は自分の仕事でそれが得意だと思いますが、LinuxカーネルやChromiumソースコードのようなものをダウンロードして見てみると、これらの奇妙な名前のディレクトリとファイルのすべてがどのように接続するかを理解します。車輪を再発明することはプログラミングの罪ですが、多くの場合、ライブラリを解剖するのに何時間も費やすよりも、自分で機能を作成する方が簡単だと感じます。 明らかに、生活のためにこれを行う人々はこれらの問題を抱えておらず、私はその点に到達する必要があります。 質問:他の全員と「統合」を開始するために実行できる手順は何ですか? ありがとう!

8
手続きコードとOOPコード
PHPで13000行以上のプロシージャスタイルのプロジェクトを完了しました(OOPは知っていますが、私はそれに精通しているため)、プロジェクトは完全に実行されています。 しかし、OOPに変換する必要がありますか?[ 世界はOOPで忙しいため ] 私のコードは、OOPの機能(カプセル化、継承は基本的に...)を必要としません! だから私は何をすべきですか? そして、OOPに変換するとどのような助けが得られますか?

7
制御フローによって冗長になる状況では、「else」を使用する必要がありますか?
次の例のようなコードに出くわすことがあります(この関数の機能はこの質問の範囲外です)。 function doSomething(value) { if (check1(value)) { return -1; } else if (check2(value)) { return value; } else { return false; } } あなたが見ることができるように、if、else ifおよびelseステートメントは、と組み合わせて使用されているreturn声明。これはカジュアルなオブザーバーにはかなり直感的に思えますが、else-s を削除し、次のようにコードを簡略化する方が(ソフトウェア開発者の観点から)よりエレガントになると思います。 function doSomething(value) { if (check1(value)) { return -1; } if (check2(value)) { return value; } return false; } これは理にかなっています。return(同じスコープ内の)ステートメントに続くすべてが実行されることはないため、上記のコードは意味的に最初の例と等しくなります。 上記のうち、優れたコーディングプラクティスに適しているものはどれですか?コードの可読性に関して、どちらの方法にも欠点はありますか? 編集:参照として提供されたこの質問で、重複した提案が行われました。私の質問は別のトピックに関係していると思います。他の質問で提示されたような重複したステートメントを避けることを求めていないからです。どちらの質問も、わずかに異なる方法ではありますが、繰り返しを減らすことを目指しています。

3
うまく機能していても、シニアや上司と一緒にプログラムを見直すのは良いことですか?
私の会社では、プロジェクトを実施する前に、上司は先輩に私や他のチームメンバーによって書かれたプログラムをレビューするように依頼します。 知識を得るには良い方法だと思いますが、プログラムがうまく機能していると、レビュー後も同じように機能しない場合があり、プログラムをもう一度調べる必要があります。 彼らは、レビューがプログラムとクエリの実行を最適化するのに役立つと言いますが、プログラムの実際の機能よりも最適化を好むことができますか?

5
Java Webアプリケーションのフォルダー構造
J2EEの初心者として、最近、Core of J2EE:Servlets&Jspsを使用して、ゼロから独自のプロジェクトの開発を開始しました。 プロジェクトのフォルダー構造が正しいかどうかを評価できませんでした。これが私のプロジェクトのフォルダ構造です。 質問をする前に、誰かが私に尋ねたとしても、なぜこのタイプのフォルダー構造なのか、答えることも正当化することもできません。質問:jspをweb-infの外に置くのは良い兆候ですか?そうでない場合、なぜそうなのですか?はいの場合、なぜですか? J2EE Webアプリケーション用の標準的なフォルダー構造の規則はありますか、mavenがいくつかの標準を導入したことは知っていますが、それでも、要件に応じてカスタマイズできます。 私は少しグーグルをして、2つの参照を見つけました 1 2 答えが同じページになく、そこから結論を引き出すことはできませんでした。 J2EE Webアプリケーションのフォルダ構造をレイアウトする際に考慮すべき点は何ですか、重要なことは、JSP、静的コンテンツをどこに入れるべきか、そしてなぜですか?

11
System.out.println()の使用がそれほど悪いのはなぜですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 もちろん、エラーメッセージまたは警告にログフレームワークを使用することは非常に有効です。ただし、短時間で新しいことを試してみたい場合は、System.out.println()を使用することがあります。 System.out.println()を使って簡単なテストを行うのは本当に悪いのでしょうか?

7
保守性に関する学生のトレーニングを改善する方法は?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 保守性は、専門的なソフトウェア開発の主要な問題です。実際、メンテナンスは、プロジェクトのリリースから基本的に終わりまで続くため、ほとんどの場合、ソフトウェアライフサイクルの最も長い部分です。 さらに、メンテナンス中のプロジェクトは、プロジェクトの総数の大部分を占めています。http://www.vlegaci.com/298/interesting-statistics-%E2%80%93-numbers-of-programmers-in-maintenance-vs-development/によると、メンテナンス中のプロジェクトの割合は約2です/ 3。 私は最近この質問に出くわしました。彼の仕事は主にメンテナンスに関するものであることに気付いた男はかなり驚いているようです。それから、フランスのソフトウェア開発専門家コミュニティ(http://www.developpez.com/)のメインサイトでディスカッション(フランス語)を開くことにしました。ディスカッションのタイトルは、「学生はプロのソフトウェア開発の現実に十分に訓練されていますか?」そして、主に保守性についてです。少なくともフランスでは、人々はその両方の面でメンテナンスに直面する準備が十分に整っていないことが指摘されました。 既存のコードを維持する 保守可能なコードを作成する ここでの私の質問は、この議論と同じであり、保守性を教える良い方法を見つけることを目指しています。 保守性をどのように教えることができますか? どのような運動を提案しますか? 保守性に関して十分な訓練を受けている場合、どのような種類のコースを受講しましたか? [編集]いくつかの誤解の後、私の質問を明確にしなければならないと思います。プロジェクトリーダーおよびソフトウェア開発者として、私はしばしば研修生または卒業したばかりの学生と仕事をしています。私はかつて自分自身を卒業したばかりでした。問題は、通常、プロジェクトの保守性を高めるSOLIDなどの原則に学生が慣れていないことです。私たちはしばしばプロジェクトを発展させる重要な困難を抱えることになります(保守性が低い)。私がここで探しているのは、保守性の重要性と、この特定の点に関してより良いコードを作成する方法に関する成功した教育の具体的な学術的な例です。または生徒の訓練方法を改善するための提案。

9
ソフトウェアのバグの定義。Blizzard Entertainmentは、私の「バグ」はバグではないと主張しています。彼らは正しいですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、おそらく再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ウィキペプディアによると、 ソフトウェアバグは、コンピュータプログラムまたはシステムのエラー、欠陥、間違い、失敗、または障害を説明するために使用される一般的な用語であり、不正確または予期しない結果を生成したり、意図しない動作をさせたりします。 最近、StarCraft 2で予期しない結果を生成する「バグ」を発見しました:http : //eu.battle.net/sc2/en/forum/topic/2868627470 問題は、StarCraft 2を長時間最小化したままにすると、ゲームが切断されず、タイムアウトが発生しないことです。ただし、最初の戦いの後は切断され、ゲームデータも失われることがあります(試合の統計情報)。 残念ながら、ブリザードによると: ゲームは、このような長期間にわたって最小限に抑えられるようには設計されていません。(ブリザード)StarCraft IIは数時間にわたって最小化されることを意図していないため、このような動作をエラーと見なすことはできません。 だから、私の「バグ」は本当にバグですか?

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