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

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

2
IRepositoryからIQueryableを返す
リポジトリパターンを使用して、一般的な使用のために、データセット(テーブル)のIQueryableを返すことは適切ですか? これは多くの場合に非常に便利です。特に、そのインターフェイスを利用する外部ライブラリ、たとえば、UI要素をソート/フィルタリングしてバインドするプラグインを使用する場合に便利です。 ただし、IQueryableを公開すると、デザインにエラーが発生しやすくなる場合があります。これと遅延読み込みの誤った使用を組み合わせると、パフォーマンスが大幅に低下する可能性があります。 一方、使用方法ごとにアクセスメソッドを用意することは冗長であり、多くの作業(ユニットテストなど)も必要です。

5
TopCoderやGoogleCodeなどのサイトに参加するメリットはありますか?
財務、雇用、認知などの明白な理由は別として、プログラミングの競争サイトを使用することの実際的/実際的な利点は何ですか? それはかなりアルゴリズム的で数学的に重いようですが、日常のプログラミングでは、それはどのように実用的なものにマッピングされますか?



7
より良いコーディング慣行を決定する
新しいプログラマーとして、私はまだ学習段階にあるため、アプリケーションを作成することは常に困難でした。 アプリケーションで特定の影響または機能を実現するために、同じ結果を実現する方法は数多くあることを理解しています。 ただし、機能する状態に合わせて純粋に関数を作成する必要があります。つまり、機能する限り、期待どおりに機能するので、問題はありません。 より高いレベルのプログラマーが親切に私に物事の正しい方法を教えてもらえますか?

7
初日から「未知の未知の」バグに備えて設計とコードを準備する最良の方法は何ですか?
私はただ疑問に思っています。「未知の未知の」バグ、特に最後の数分に頻繁に発生する厄介でランダムなバグを回避するための実用的な方法やテクニック、さらにはこれらのことを最小限のレベルに保つためのトリックはありますか。新しいプラットフォームで作業するとき、または特定の新しいテクノロジーを初めて使用するとき、設計とコードが十分に堅牢であることをどのように正当化するのですか?またはこれらのことは時間と間違いによってのみ学ぶことができますか? (ほとんどの作業時間にC ++を使用しています) ありがとう!

1
新しいプログラミングプロジェクトの準備[終了]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私は自分が初心者プログラマだと思います-初心者はあなたが好きです。そのため、これまでにないことを行うプロジェクトでプロジェクトを開始する方法がまだわかりません。 たとえば、YouTubeから動画をダウンロードして、ユーザーが指定した形式に変換できるプログラムを書きたいと思います。私はこれまでこのようなことをしたことがなく、どこから始めればいいのか本当にわかりません。むしろ、何を検索すればよいかわかりません。 「YouTubeダウンローダー」を検索すると、既存のYouTubeダウンローダーサイトへの無用なリンクが大量に表示されますが、そのほとんどは機能しません。 私が知りたいのは、私が何も知らないプロジェクトを始める方法です。このプロジェクトに必要なものを見つけるにはどうすればよいですか?これに最適な言語を見つけるにはどうすればよいですか?特に役立つAPIがあるかどうかを確認するにはどうすればよいですか?また、新しいプロジェクトに取り組む準備をするときに、他にどのような質問をする必要がありますか?

1
Schemeを学習することでどのようなメリットがありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 私はJavaプログラマーであり、理論的なコンピューターサイエンスについて少し学ぶことにしました。私はその学位は持っていませんが、ソフトウェア開発に関してはコーディング以外に何も知らないので、少しの経歴が私を助けてくれます。 私はこのウェブサイトで回答を検索し、「コンピュータプログラムの構造と解釈」という本を推奨する多くの人を見つけましたが、この本を処理するために必要な数学的なノウハウがないため、私は行くことにしました代わりに「プログラムの設計方法」を使用してください。 ここで私の質問は、この経験から何を得ることができるのですか?それは私が望むように私にコンピュータサイエンスについて教えてくれますか?それとも、代わりにアルゴリズムとデータ構造について読む方が良いですか?

5
質素なプログラミング…それは何のために良いのですか?[閉まっている]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 6年前休業。 私たちはプロジェクトでスパルタン プログラミングを使用せざるを得ません。だから私はそれを手に入れました、それはメソッドを本当に短くし、最初に単純なケースを処理します。しかし、難読化されたCコードコンテストのようなコードの価格に本当に価値があるのでしょうか。 何かに役立つと思いますか?

4
(巨大な)プロジェクトで複雑なコードを処理する方法
「なぜ(一部の)ITプロジェクトが複雑になりすぎるのか、それを回避する方法は?」についての回想録を準備しています。 複雑なコードを含むプロジェクトに遭遇したり、維持するのが困難だったりした場合、どうやってそれをやり遂げましたか? プロジェクトで使用する複数のアプリケーションから選択する必要がある場合、それらの機能で何が最優先事項であり、その理由は何ですか?

2
プロジェクトを始める前の5つのこと?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、討論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 新しいプロジェクトを始める前に最初に行う5つのことは何ですか? あなたはいつも新しいフレームワークの研究に一日を費やしていますか?または、類似または競合する製品を使用していますか?

1
電話アプリに統合された広告-バッテリーの浪費を避ける方法は?
3月に発表されたPCWorldレビューを検討してください。 広告が詰め込まれた無料のAndroidアプリは主要なバッテリー消耗 ... Microsoftと共同でパーデュー大学の研究者は、無料のスマートフォンアプリでのサードパーティの広告が、アプリのエネルギー消費の最大65〜75%を占める可能性があると主張しています... ユーザーのバッテリーを使いすぎないように、広告サポートをモバイルアプリケーションに統合するためのベストプラクティスはありますか? ... AndroidフォンでAngry Birdsを起動すると、研究者たちは、コアゲームコンポーネントがアプリの総エネルギーの約18%しか消費しないことを発見しました。調査によると、最大のバッテリー消費量は、アプリの総エネルギーの45%を占めるサードパーティの広告と分析に電力を供給するソフトウェアによるものです... レポートにあるように、「3Gテイル」から遠ざけるためのより良い方法を誰かが呼びましたか?Wi-Fi / 3G無線の継続的な使用を回避するために、数時間キャッシュされる大量の広告セットをダウンロードし、それらを使用して広告スペースに入力する方が良い/可能ですか? モバイルアプリに広告を含めるためのベストプラクティスはありますか?

6
プロジェクトを切り替える/プロジェクトに頻繁に戻る場合のベストプラクティスは何ですか?
私の仕事の本質は、数週間ごとにプロジェクトを切り替えなければならないことです。私の生産性に対する最大の障害の1つは、関連するすべてのコードを一定期間表示しなかった後、再び「頭の中で」元に戻すための立ち上げ時間であることがわかりました。これは、より短い休憩/より長い休憩では、より小さな範囲で発生します。 明らかに、優れた設計、ドキュメント、コメント、および物理構造がすべてこれに役立ちます(プロジェクトの切り替えをできるだけ頻繁に行うことは言うまでもありません)。しかし、私が見逃している可能性のあるプラクティス/ツールがあるかどうか疑問に思っています。これを改善するための具体的な方法は何ですか?

2
より大きなデータセットの感情分析アルゴリズムを最適化する方法
私は感情分析の初心者で、ベイジアンオピニオンマイニングのための優れたリソースと、それを自己改善させる方法を見つけました。しかし、最適な分析が提供されたデータセットに依存しているかどうか、そして自己改善は既知のパターンをデータセットに追加することになるので(私の理解)、アプリケーションがやがて巨大なデータセットで過負荷にならないのではないかと思っていました。より多くのパターンが毎日データセットに追加される時間ですか?アプリケーションをスケーラブルにするための適切なアプローチは何ですか(適切な場所で適切な用語を使用している場合)。

3
アプリケーションコードと単体テストのインターフェイス
私は、いくつかの新しいモジュールを実装してユニットテストする必要があるプロジェクトに取り組んでいます。私はかなり明確なアーキテクチャを念頭に置いていたので、メインのクラスとメソッドをすぐに書き留めてから、単体テストの作成を開始しました。 テストを書いている間、次のような元のコードにかなりの修正を加える必要がありました。 それらをテストするためにプライベートメソッドをパブリックにする プライベート変数にアクセスするためのメソッドを追加する ユニットテスト内でコードを実行するときに使用するモックオブジェクトを挿入するためのメソッドを追加します。 どういうわけか私はこれらが私たちが何か間違ったことをしている症状であると感じています、例えば 最初の設計が間違っていた(一部の機能は最初から公開されているはずでした)、 コードは、単体テストとのインターフェース用に適切に設計されていません(おそらく、かなりの数のクラスが既に設計されているときに単体テストの設計を開始したという事実が原因です)。 ユニットテストを間違った方法で実装している(たとえば、ユニットテストはAPIのパブリックメソッドを直接テスト/アドレスするだけであり、プライベートメソッドをアドレスするべきではない)。 上記の3つのポイントの混合、およびおそらく私が考えていなかったいくつかの追加の問題。 単体テストの経験はあるものの、第一人者にはほど遠いので、これらの問題についてのあなたの考えを読んでいただければ非常に興味があります。 上記の一般的な質問に加えて、より具体的で技術的な質問があります。 質問1.クラスAのプライベートメソッドmを直接テストし、それをテストするためにパブリックにすることは理にかなっていますか?または、mを呼び出す他のパブリックメソッドを対象とする単体テストによってmが間接的にテストされると想定する必要がありますか? 質問2.クラスAのインスタンスにクラスB(複合集約)のインスタンスが含まれている場合、AをテストするためにBを模擬することは理にかなっていますか?私の最初のアイデアは、BインスタンスはAインスタンスの一部であるため、Bをモック化しないことですが、それからこれについて疑い始めました。Bをモックすることに対する私の議論は、1と同じです:Bはプライベートwrt Aであり、その実装にのみ使用されます。しかし、これらの問題は設計上の欠陥を示している可能性があります。おそらく、複合集約ではなく、AからBへの単純な関連付けを使用する必要があります。 質問3.上記の例で、Bをモックすることにした場合、どのようにBインスタンスをAに注入しますか?ここに私たちが持っていたいくつかのアイデアがあります: AコンストラクターでBインスタンスを作成する代わりに、Aインスタンスの引数としてBインスタンスを注入します。 BFactoryインターフェースを引数としてAコンストラクターに渡し、Aがファクトリーを使用してプライベートBインスタンスを作成できるようにします。 AにプライベートなBFactoryシングルトンを使用します。シングルトンを設定するには、静的メソッドA :: setBFactory()を使用します。Aが設定されている場合(テストシナリオ)、ファクトリシングルトンを使用するBインスタンスを作成する場合、シングルトンが設定されていない場合(実稼働コードシナリオ)、Bを直接作成します。 最初の2つの代替案は私にはきれいに見えますが、Aコンストラクターのシグニチャーを変更する必要があります。APIを変更してテストしやすくすることは、私には不便に思えますが、これは一般的な方法ですか? 3番目の方法には、コンストラクターのシグニチャーを変更する必要がない(APIへの変更の影響が少ない)利点がありますが、テストを開始する前に静的メソッドsetBFactory()を呼び出す必要があります。これはIMOエラーが発生しやすい(テストが適切に機能するためのメソッド呼び出しへの暗黙の依存関係)。どちらを選べばいいのかわかりません。

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