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

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

3
ヘビー級の開発方法論で個人的な練習をする方法は?
私は新しい仕事に取り組んでいます。プロジェクトは厳しい品質基準を満たす必要があり、詳細に文書化され、非常に詳細に管理され、UMLダイアグラムなど、これまでのほとんどの仕事の経験である「カウボーイコーディング」とは反対のすべてのものです。 。大規模な航空宇宙または医療機器ソフトウェアの開発方法を考えてみてください。 カウボーイコーディングの混乱を残してよかったと思います。ヘビー級のエンジニアリング手法がどれほどうまくいくか知りたいです。しかし、どのようにして重いメソッドの経験を迅速に得ることができますか? 単に数か月/数年の間仕事にいるだけでなく、それはです。 単なる言語、または新しいAPIで、おもちゃのテストプログラムをハックしたり、読んだり、意図的に間違いを起こして何が起こるかを確認したりできます。自転車に乗ったり楽器を演奏したりするのと同じように、練習は不可欠です。フルートを手に取り、毎日30分を費やすのは簡単です。オーケストラに参加したり、フルタイムのフルートコンサルタントになる必要はありません。しかし、大規模で複雑で、チームが関与するソフトウェアエンジニアリング活動をどのように実践するのでしょうか。そのほとんどは、コミュニケーションと計画、コミュニケーションの誤りの回避、およびスケジュールと予算の制限の超過に関するものです。 これは一人で行うことは不可能のようです。少数の人が大きなプロジェクト全体を短時間で(1日)小規模にエンジニアリングできる方法はありますか?

5
継承を停止するのはいつですか?
むかしむかし、継承についてStack Overflowで質問しました。 私はチェスエンジンをOOPファッションで設計すると言った。だから私はピースの抽象クラスからすべてのピースを継承しますが、継承はまだ続きます。コードで表示させてください public abstract class Piece { public void MakeMove(); public void TakeBackMove(); } public abstract class Pawn: Piece {} public class WhitePawn :Pawn {} public class BlackPawn:Pawn {} プログラマーは私の設計を少しエンジニアリングよりも見つけており、色付きのピースのクラスを削除し、以下のようなプロパティメンバーとしてピースの色を保持することを提案しました。 public abstract class Piece { public Color Color { get; set; } public abstract void MakeMove(); public abstract void …

7
メソッドがfalseを返すかどうかの確認:結果を一時変数に割り当てるか、メソッド呼び出しを条件付きで直接配置しますか?
ifステートメントでtrueまたはfalseの値を返すメソッドを呼び出すのは良い習慣ですか? このようなもの: private void VerifyAccount() { if (!ValidateCredentials(txtUser.Text, txtPassword.Text)) { MessageBox.Show("Invalid user name or password"); } } private bool ValidateCredentials(string userName, string password) { string existingPassword = GetUserPassword(userName); if (existingPassword == null) return false; var hasher = new Hasher { SaltSize = 16 }; bool passwordsMatch = hasher.CompareStringToHash(password, existingPassword); return …

5
チームメイトにオブジェクトに加えた変更を知らせる方法は?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 PHPオブジェクトがあるとしましょう。たとえば、companyObjです。 class companyObj { private company_name; private company_address; public function print_contact() { //logic } } これは私が書いたオブジェクトで、チームメイトと共有しました。今、私はそれをより強力にしたいと思います: class companyObj { private company_name; private company_address; private company_contact_person; public function print_contact() { //logic updated } } では、オブジェクトに設定可能な属性がさらにあることをチームメイトにどのように通知できますか? 開発チームの全員に電子メールを送信する代わりに、チームメイトがソースコードレベルで変更された内容を確認するために時間を無駄にしたくない場合、どうすればよいかをチームに知らせることができますか?

4
カスタムショッピングカートを開発する価値はありますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 私たちの職場には、cakephpモジュールのハンサムなライブラリーがあり、ショッピングカートがプロセスを遅くするまで、カスタムWebサイトを適切なペースで開発しています。さまざまなプロジェクトでさまざまな(Magento、Opencart、Zencart)ショッピングカートを使用しました。これらのショッピングカートをコアのCakePHPアプリケーションとマージする必要があります。通常、非常にカスタムの要件により、ショッピングカートはアップグレードできなくなり、多くの時間がかかります。 独自のショッピングカート(現時点では非常に基本的なものであり、先に進むにつれて拡張する)をゼロから作成して、カスタム要件に簡単に適合できるようにすることを考えています。やる価値はありますか? 更新8月11日 独自のショッピングカートを開発し続けました。これが皆さんと共有したい私の経験です。 利点 新しいカートは、変更や拡張が簡単です。 あいまいな要件やカスタム要件がある場合に時間を節約し、既存のコードライブラリからモジュールを直接インポートできます。 カートとカスタムWebサイトにデュアルテンプレートを実装する必要はありません。 ショッピングカートとカスタムWebサイトの単一の管理パネル。 制限事項 それでも、市場の他のカートと比較して十分に成熟していません。 セキュリティ上の懸念。私たちはたいていCakePHPのセキュリティに依存しています。 機能がない 直面する問題 配送/支払いゲートウェイの開発は本当に大変でした。以下のよう@davidhaskinsが指摘しました 標準のショッピングカートをハッキングしてニーズを満たすために費やす時間を大幅に節約できました。

3
BDD:はじめに
私はBDDから始めて、これが私の話です。 Feature: Months and days to days In order to see months and days as days As a date conversion fan I need a webpage where users can enter days and months and convert them to days. 疑問があります... 何かをコーディングする前にシナリオを書くべきでしょうか、それとも最初にシナリオを書いてからコードを書いたり、シナリオをもう一度書いてからコードを書いたりするべきでしょうか... 以前にシナリオを作成する必要がある場合、私のステップを承認しても製品コードはまだ完了しませんか? いつコードをリファクタリングする必要がありますか?機能が完了した後、または各シナリオの実装後?


2
デスクトップアプリケーションのUIオートメーションパターンとベストプラクティス
バックグラウンド 現在、MS Officeのプラグインのテストを自動化しています。私たちはVS 2010でコード化されたUIテストを作成しています。「コード化されたUIテストビルダー」ツールを使用できると思いますが、それは実際には私の特定のケースには適していません。 このため、さまざまなアクション機能を追加するUIコントロール/マップごとに、独自のUIマップクラスと拡張メソッドを作成しました。たとえば、ボタンを押すか、UI値をアサートします。 テストケースのシナリオはテストクラスにあります。 私はこの分野の新人であり、自動化テスターとして働くのも初めてです。 質問 プログラミング/設計の観点から、デスクトップアプリケーションのテスト自動化に関するいくつかの優れた実践についての経験とアドバイスを共有してくれる人は親切でしょうか?

11
同僚は、ソース管理システムからのコードをお互いに確認する必要がありますか?
これが私の話です。私の同僚の1人がすべてのコードをレビューするために使用し、リビジョンシステムにホストされています。私は彼が所属するパーツの変更の適切なレビューについて話しているのではありません。彼はコードファイルをファイルごとに、行ごとに監視します。すべての新しいファイルとすべての変更。私はスパイされているように感じます! 私の推測では、コードがすでに制御システムにホストされている場合は、少なくとも実行可能として信頼する必要があります。私の質問は、多分私は偏執狂的過ぎて、お互いのコードをレビューする練習は良いですか? PS:私たちはたった3人の開発者からなるチームであり、私たちがもっと増えれば、同僚が私たちが書くすべてのコードをレビューする時間がないことを恐れています。

1
書記素に基づく文字列クラス?
コードポイントや文字ではなく、Unicode書記素クラスタの文字列を表す文字列クラスがないのはなぜでしょうか。ほとんどのアプリケーションでは、プログラマーが必要なときに書記素のコンポーネントにアクセスする方が、コードポイントからコンポーネントを整理する必要があるよりも簡単であるように思えます。 (少なくとも理論的には)。内部的に文字列クラスは、UTF-8、UTF-16などの可変長エンコーディングを使用する場合があります。この場合、UTF-32も可変長です。または、それらすべてのサブクラスを実装します(オプションで、実行時に選択肢を構成して、さまざまな言語が最適なエンコーディングを使用できるようにします)。しかし、プログラマーが文字列を検査するときに書記素ユニットを「見る」ことができれば、


7
なぜ未使用の変数がそのような問題なのですか?
ある日、未使用の変数の警告を消去していましたが、熟考し始めました。それらの問題は何ですか? 実際、それらの一部はデバッグにも役立ちます(例:例外の詳細を調べる、または返される前に戻り値を確認する)。 私はそれらを持っていることで本当の実際のリスクを見つけることができませんでした。 例 次のような他のプログラマーの注意を引く時間がかかる行を意味するのではありません。 int abc = 7; それは明らかな冗長性と注意散漫です。私は次のようなものを意味します: try { SomeMethod(); } catch (SomeException e) { // here e is unused, but during debug we can inspect exception details DoSomethingAboutIt(); }

3
Webアプリケーションのサーバー要件を計算する方法
私はモバイルアプリケーションのAPIを公開するバックエンドを開発しています。ユーザーは登録、製品の追加、製品のリンクを電子メール/ SMS /どこでも共有でき、他の人はそれをクリックして製品を購入できます。これは、モバイルアプリケーションの単純なワークフローです。アプリは、画像のアップロードと取得がサードパーティのクラウドサービスによって行われる、画像集約型のアプリです。SO画像部分は私のバックエンドで処理されません。 現在、私は開発チームの出身で、ハードウェアサーバー側の経験はほとんどありません。インフラストラクチャの要件を説明したところ、次の質問がありました。 アプリケーション/ストレージスループット アプリケーションのスループット(3か月、6か月、1年の同時接続数) ストレージスループット(3か月、6か月、1年でのデータの増加) HA要件 DR要件 上記の3点をどのように予測すればよいかわかりません。スループットはどのように計算されますか?最初の1か月でアプリケーションに10000人のユーザーが登録すると推定されます。そのうち5000人がアクティブユーザーになります。アプリケーションへの平均ログインでは、ユーザーあたり10 APIヒットがあり、これは5000 * 10 = 50,000ヒット/月になります。これは、1分あたり1 APIヒット、つまり最初の月に最大2つの同時接続になります。 計算はこのようになりますか?データの増加をどのように計算しますか?それは、ユーザーが製品を登録、作成し、そのために消費されたデータベースサイズを合計すると、データの増加と呼ばれることになるということですか。 この質問は悲惨に思えるかもしれませんが、サーバーの要件に対してスループットがどのように計算されるかを理解するには、本当に助けが必要です。

4
ダーティデータベースを回避するための統合テスト中のクリーンアップと配置のプラクティス
私はC#でテストをコーディングしていますが、次の構造で解決しました。 try { // ========== // ARRANGE // ========== // Insert into the database all test data I'll need during the test // ========== // ACT // ========== // Do what needs to be tested // ========== // ASSERT // ========== // Check for correct behavior } finally { // …

1
CSRFセキュリティのトークン更新はどのくらいの頻度で行う必要がありますか?
背景から始めるために、この投稿はCSRFトークンについてJeff Atwoodが述べたものです。このページで、彼は続けて言っています: さらに強力ですが、より複雑な防止方法は、サーバーの状態を活用することです。つまり、クライアントに送信するすべてのHTMLフォームに対して一意のランダムキーを生成(およびタイムアウト付きで追跡)します。Stack Overflowでこのメソッドのバリアントを使用して、大きな成功を収めています。 しかし、この投稿自体では、Jeffはトークンをいつ、どのように更新する必要があるかについて決してコメントしていません。 私が取り組んでいるWebアプリで同様のテクニックを使用していました。それはこのように動作します: ユーザーがPOSTサーバーにデータを送信するたびに、csrfトークンが送信されます。 このCSRFトークンは、ユーザーのセッションで暗号的に強力なCookieに保存されます。 トークンが有効な場合は、ユーザーのリクエストが処理され、逆の場合も同様です。 リクエストが有効な場合は、サーバー側の古いトークンを破棄し、新しいトークンを作成します。サーバーからの応答には、次の要求で使用される新しいcsrfトークンが含まれています。ページ上のすべてのフォームの古いトークンが新しいトークンで更新されるため、次のリクエストが適切に処理されます。 トークンを更新してからPOSTリクエストするのが賢明ですか、それともユーザーがGETリクエストを行ったときにのみ更新を行い、次のGETリクエストが行われるまで同じトークンを保持する必要がありますか?

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