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

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

1
開発スタックのスライス-対角線?
新しいプロジェクトが進行中です。現時点では、開発者はチームAとチームBの2つのチームに分かれています。このプロジェクトには、開発スタック全体での開発が必要な2つの部分があります。以下に示す非常に単純化されたスタックのサンプル: プロジェクトの各部分はスタック全体にわたる開発を必要とするため、通常はチームB内で作業を分解し、異なる部分間の相互作用を設計および実行するフルスタック開発者アプローチを期待します。 しかし最近、チームAがスタックの特定の部分を担当することを望んでいることを学びました。チームは、2つのチームの分割を提案しています。チームBからの開発はありません。分割は次のようになります。 私にはこれは非常に不自然に感じます。各チームには、これらを達成するための異なる明確な目標とタイムスケールがありますが、チームBは機能を実装するためにチームAに依存します。提案された解決策は、共通のインターフェイスが事前に定義されていることです(おそらくプロジェクトには2年のタイムスケールがあり、多数になる可能性があります)。チームAは、独自の目標を設定しているにもかかわらず、これらのインターフェイスに必要なビットを早期に開発し、チームBは、すぐに短期間のすべての呼び出しをスタブして、進行できるようにします。 私はこのアプローチについて懸念があります: インターフェイスは変更される可能性があり、チームAは変化する要件に対応するための帯域幅または時間がない場合があります。 チームAのコードのバグにより、チームBの進行が妨げられる可能性があります。また、チームAが異なる優先順位キューを持っているため、これらを修正する優先事項ではない可能性があります。 チーム全体に広がる知識の欠如-チームBは、内部で何が起こっているのかを完全に理解していない可能性があり、そのために設計上の決定が下される可能性があります。 業界の多くの企業にはサブチームがあり、これに対処できる必要があることが示唆されています。私の理解では、一般的に、チームは当初の予想方法(フルスタック)に分割されるか、以下のようにテクノロジースタックを分割します。 ですから、私は他の業界が何をしているかを知りたいと思っています。ほとんどの分割は垂直/水平ですか?対角線分割は意味がありますか?対角線の分割が発生した場合、私の懸念は有効であると思われ、チームBが懸念すべきことは他にありますか?私はおそらく、チームBの成功または失敗の責任を負うことに注意してください。

3
デスクトップアプリケーションは、Webサービスの前にどのようにリモートサーバーと通信しましたか?
デスクトップアプリケーションにはあまり慣れていませんが、クライアントサーバーデスクトップアプリを作成する必要がある場合、データアクセスはWebサービスを介して行われます。Webサービスを介したデータアクセスはセキュリティを提供すると考えています。dbサーバーのユーザー名やパスワードなどを渡す必要はありません。 Webサービスの前、データベースアプリケーションはこれをどのように行っていましたか?すべての重要なdb情報がデスクトップアプリのインストールに渡されましたか?もしそうなら、プログラマはどのようにセキュリティの側面を管理しましたか?または、プログラマーはWebサービスに似たものを使用しましたか?

4
forループ注釈でこの追加変数を使用する利点はありますか?
私が取り組んでいる大きなプロジェクト(擬似コード)で次のループアノテーションを見つけました。 var someOtherArray = []; for (var i = 0, n = array.length; i < n; i++) { someOtherArray[i] = modifyObjetFromArray(array[i]); } 私の注意を引いたのは、この余分な「n」変数です。このように書かれたfor lopを見たことはありません。 明らかにこのシナリオでは、このコードを次の方法で書くことができなかった理由はありません(私は非常に慣れています): var someOtherArray = []; for (var i = 0; i < array.length; i++) { someOtherArray[i] = modifyObjetFromArray(array[i]); } しかし、それは私に考えさせられました。 そのようなforループを書くことが理にかなっているシナリオはありますか?「配列」の長さはforループの実行中に変わる可能性があるという考えが浮かびますが、元のサイズよりもさらにループしたくはありませんが、そのようなシナリオは想像できません。 OutOfBoundsExceptionが発生する可能性が高いため、ループ内で配列を縮小してもあまり意味がありません。 このアノテーションが役立つ既知のデザインパターンはありますか? 編集 @ Jerry101で述べたように、理由はパフォーマンスです。これが、私が作成したパフォーマンステストへのリンクです:http …

4
プライベートメソッドがプライベートデータにアクセスするためにパブリックルートを使用する必要があるのはいつですか?
プライベートメソッドがプライベートデータにアクセスするためにパブリックルートを使用する必要があるのはいつですか?たとえば、この不変の「乗数」クラスがある場合(少し工夫されていると思います)。 class Multiplier { public: Multiplier(int a, int b) : a(a), b(b) { } int getA() const { return a; } int getB() const { return b; } int getProduct() const { /* ??? */ } private: int a, b; }; 実装できる方法は2つありますgetProduct。 int getProduct() const { return a * b; …

2
「クリーンコード」の実践は本当にクリーンで便利ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 私は現在、大企業でインターンシップを行っており、ソフトウェア配信構造の多くの変更を受けています(アジャイルに移行)。 過去数ヶ月で、私はこの宗教的なClean Code慣習への執着と 、開発者にとって聖書のような本であることに気付きました。 さて、クリーンなコードの最も重要な機能の1つは、わかりやすい名前付けと厳密なリファクタリングに基づいた自明のコードです。これにはno commentingルールが続きます。 このクリーンなコードは、コードの保守と改善を容易にする長期的な投資であることを理解していますが、...これは本当に大騒ぎに値するのでしょうか? Clean Codeでの経験や、私があまりにも保守的すぎるのか、それとも一時的な傾向であるのか、誰でも意見を共有できますか。

2
委任とは何ですか?iOSプログラミングでなぜそれが重要なのですか?
現在、私は自分でiOSプログラミングを教えていますが、頭を包み込むのが本当に難しいと思う概念の1つは委任です。それは何ですか?なぜ、どのように使用されていますか?利点は何ですか?私が読んでいる本のテクニカルライティングは、理解するのを難しくしています。

4
正しいことをすれば時間を節約できると同僚に納得させる方法
私は最近、一握りのプログラマーと一緒に新しい会社で働き始めました。約70人の従業員を抱える中規模の会社ですが、IT部門の従業員数は9〜10人で、私の横には3人の「プログラマー」がいます。しかし、これらの人たちの経験は非常に限られており、非常に多くのことをやっています。たとえば、プロジェクトの1つはPHP Webサイトです。コードの大部分は20,000行のPHPコントローラーに保存され、PHPには〜6000行のJavaScriptが埋め込まれています。 私はあちこちで小さな提案をし続けていますが、誰も聞いていません。みんなが忙しすぎて私の提案を実行できないと言っています。事は、彼らはそんなに忙しくてはいけないし、物事が正しく行われていなければいけません。彼らはほとんどの時間を、壊れ続けるものの修理に費やしています。各プロジェクトが正しくビルドされていれば、自分ですべてを行うことができました。 これらの人やマネージャーに、物事を変える必要があること、そして物事を変えることで時間を節約できることを納得させるには、どのようなアプローチを取るべきでしょうか?同僚が説得しようとするのをスキップして、会社が正しいことを始めた場合に会社がたくさんのお金を節約する方法についてのビジネス上の提案で、マネージャーに直行しますか?

2
無効なフォーム送信でのPOST /リダイレクト/ GET?
Web開発の分野では、フォーム送信のフィールドが無効な場合にもPOST / Redirect / GETを実行することをお勧めしますか? 通常、この場合、機密性の高いトランザクションは発生しません。ただし、それにもかかわらず、POST / Redirect / GETパターンを利用することは依然として良い習慣であるという主張をすることができますか?

13
中かっこスープの取り扱い
私は何年もC#とVB.NETの両方でプログラミングしましたが、主にVBでプログラミングしました。私はキャリアをC#にシフトしていますが、全体的にはC#の方が好きです。 しかし、私が抱えている問題の1つは、中括弧のスープです。VBでは、各構造キーワードに一致する近いキーワードがあります。次に例を示します。 Namespace ... Class ... Function ... For ... Using ... If ... ... End If If ... ... End If End Using Next End Function End Class End Namespace C#で記述された同じコードは、非常に読みにくくなります。 namespace ... { class ... { function ... { for ... { using ... { if ... { …

7
コード内の変数の使用を一般化する
変数を一般化することをお勧めします(単一の変数を使用してすべての値を保存すること)。 簡単な例を考えてみましょう Strings querycre,queryins,queryup,querydel; querycre = 'Create table XYZ ...'; execute querycre ; queryins = 'Insert into XYZ ...'; execute queryins ; queryup = 'Update XYZ set ...'; execute queryup; querydel = 'Delete from XYZ ...'; execute querydel ; そして Strings query; query= 'Create table XYZ ... '; execute query …

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

5
どのような理由でC#の「使用」セクションをきれいに保つ必要がありますか?
コードをリファクタリングするときに、IDEをC#クラスのusingセクションに移動し、未使用の名前空間と重複する名前空間を削除して、すべてを並べ替えました。 ペア(ペアプログラミング)が理由を尋ねました。なぜそうしたのか分かりませんでした。私はすべてのコードをきれいに整頓することを習慣からやった。つまり、よりクリーンなコードを作成することは一般的には良いアイデアであると言いましたが、もちろんその理由は正当な理由ではありませんでした。C#コードページのusingセクションで時間を費やすことすらしません。 クラスまたは列挙(または一般に型)をあるネームスペースから別のネームスペースに移動することが多いため、コードに新しいusingステートメントを追加します(コードウィンドウを上に移動して自分でusingステートメントを記述するか、またはAlt+ Ctrl+のF10組み合わせを使用してエディタを介して)、これらの新しいusingステートメントはusingセクションの最後に追加され、アルファベット順にソートされず、コンパイラはこれらの問題のいずれにも不満を感じないため、なぜこれを行う必要があるのかセクションはきれいで整頓されていますか?どのような理由がありますか?

4
コミットメッセージ内のバグ/問題への言及は良い習慣と見なされていますか?
バグトラッカーにメモを自動的に書き込むようにソース管理を設定しているプロジェクトに取り組んでいます。コミットメッセージにバグの問題IDを書き込むだけで、コミットメッセージがバグトラッカーへのメモとして追加されます。 このプラクティスの欠点はほんの少ししかありません。将来、ソースコードがバグ追跡ソフトウェアから分離された場合(または報告されたバグ/問題が何らかの形で失われた場合)。または、誰かがコミットの履歴を調べているが、バグトラッカーにアクセスできない場合。 私の質問は、コミットメッセージにバグ/問題の参照を含めることをお勧めしますか?他にも欠点はありますか?

2
「自由な時間」で創造性を活用する
一部の企業は、プログラマーが非常に創造的な人間であることを驚きと利益に発見しました。例えば、GoogleとAtlassianは、プログラマーが(承認を得て)やりたいことを何でもやり遂げ、会社が報酬を得る定期的な(月次、私は信じる)「フリーデイ」を許可していると思います。 引用された例は、新製品、以前誰も修正したくなかったバグ修正、新しいチームの形成などです。別の結果(そしておそらく元の目標)は、空き時間の間の残りの日の間、プログラマーがより多くのモチベーションを持っていることです。 「制御された」創造的なアウトプットを許可することは、動機付けと士気に良いというこの理論への裏付けはありますか?

11
プログラミングは繰り返し作業ではないことをプログラマ以外に説明するにはどうすればよいですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 一部の人々は、それがキーボード上で繰り返し入力するだけであるというプログラミングの見方をしています。これは真実ではありません。まず第一に、設計アーキテクチャなど、実際にコードを入力するよりも多くの作業が必要です。第二に、非常に多様で非反復的なタスクであり、常に新しい課題が発生する可能性があります。 プログラミングは非プログラマーにとって反復的な作業ではないことをどのように説明すべきですか?

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