2009-03-25 11 views
6

私は新しいフレームワークを研究する古い効果的なアプローチを覚えています。 MFCのように、常に問題の良い本を読むのが最善の方法でした。コーディングをスピードアップするために多くのマテリアルをスキップしようとしたとき、最初にそのブック全体を読むのが早くなることが判明しました。小さな部分でフレームワークを研究する良い方法はありませんでした。あるいは、少なくとも私はそれらを見なかった。部分的にフレームワーク/ライブラリを学習するための効果的な戦略

最後に、多くの新しいことが起こりました.Googleからの検索結果の改善、ブログのプログラミング、インターネットの議論に関わる多くの人々、多くのオープンソースのフレームワークです。

現在のところ、ソフトウェアを書くときには、サードパーティ(通常はオープンソース)のフレームワーク/ライブラリに依存することがよくあります。そして、私たちは、それらを使用するための機能のほんの少量を知る必要があります。これは、不必要なペシメーションなしでライブラリの小さなサブセットを使用する最も簡単な方法を見つけることです。

可能な限りフレームワークを勉強しないで効果的に使用するにはどうしますか?

たとえば、Luceneでドキュメントセットをインデックスする必要があるとします。検索スニペットを強調表示する必要があります。 Luceneを深く勉強すれば、複数のファイル、あいまいなクエリ、脳を占有する他の多くのものに対して、1つのファイルに索引を格納するステムママーは気にしません。

時間を節約するための戦略、アプローチ、トリックは何ですか?

私は自分のプロセスを改善できると感じていますが、私は何をするかを列挙します。

  • "lucene tutorial"、 "lucene highlight example"などを検索してください。公開日、コメント数、コメントのトーンに基づいて、非公式記事(ブログ投稿)の信頼スコアを見積もります。明確な答えがない場合は、ターゲット上に新しい検索キーワードとリンクを集めます。
  • 公式サイトでの素早いチュートリアル/初心者ガイドの検索
  • 初心者向けのjavadocの価値を見積もります。 (Read Lucene highlight package summary
  • ライブラリに付属している簡単なサンプルを探して、必要なものを探します。 (研究 "src/demo/org/apache/lucene/demo")
  • Luceneメールリストの "simple Lucene search highlighting example"について質問してください。あなたが愚かな質問をすると、答えが得られず、評判が悪くなることさえあります。そして、しばしば、フレームワークを深く研究していないので、あなたが疑問に思っているかどうかはわかりません。
  • Stackoverflowやその他のQAサービスで「Luceneで強調表示されている検索キーワードの実例を教えてください。しかし、この質問は非常に具体的であり、答えも悪い得点も得られません。
  • オープンソースの場合、フレームワークコードからの回答をどの程度簡単に取得できるかを見積もります。

調査/検索ルートは何ですか?可能であれば、優先順に書いてください。

答えて

4

私はAPIを評価するために三相技術を使用します。

1)Discovery - このフェーズでは、できるだけ多くの異なる検索フレーズの組み合わせでStackOverflow、CodeProject、Google、およびNewsgroupsを検索し、自分のニーズに合ったものを巨大なリストに追加します。

2)フィルター/並べ替え - 私の集まり段階で見つけた各項目について、私は自分のニーズに合っているかどうかを調べます。これを行うには、私はAPIドキュメントに直接ジャンプし、必要な機能がすべてそろっていることを確認してください。この結果は、最上位のソリューションとフィルタリングされたすべてのクルフトの重み付けリストに入ります。

3)プロトタイプ - 私はいくつかの上位候補を取り上げ、すべての重要な機能にぶつかる小さな実装を試みます。どんなプロジェクトにも当てはまるものが勝ちです。何らかの理由で実装中に問題が最善の選択肢になった場合、他の実装に後退する可能性があります。

もちろん、プロジェクトにとって最高のAPIを選択するには、膨大な数の要因があります。いくつかの重要なもの:

  1. これはどれくらい私のディストリビューションのサイズを増やしますか?
  2. APIは既存のコードのスタイルにどれくらい適していますか?
  3. 高品質ですか、それともドキュメントですか?
  4. これは多くの人が使用していますか?
  5. コミュニティはどのくらいアクティブですか?
  6. 開発チームはどのくらい活発ですか?
  7. 開発チームはバグのパッチ要求にどの程度反応しますか?
  8. 開発チームは私のパッチを受け入れますか?
  9. 私のニーズに合わせて拡張することはできますか?
  10. 全体的に実装するのにどれくらいの費用がかかりますか?

...もちろんもちろんです。それはすべてプロジェクトに非常に依存しています。

時間を節約することについては、あまりにも多くを節約しようとすると、ちょうど後であなたに噛まれるようになると言います。良いライブラリーを選ぶ時間は、少なくともそれを実装するのに費やす時間と同じくらい重要です。また、道を考えると、6ヶ月であなたはむしろ幸せにコーディングしていますか、あるいはあなたはむしろ異端児の開発チームと議論していますか?あなたの選択を徹底的に評価して、余分な2日を費やすことで、後で多くの苦痛を軽減することができます。

-1

時間を節約するための戦略、アプローチ、トリックは何ですか?

まあ、検索します。私は一般的に、自分自身を研究することを好む質問をしません。悪化が悪化すると、私はその文書を読むでしょう。いくつかのケースでは(例えばSharpSVNでいくつかの作業をしていたとき)、APIの仕組みに関する情報を得るために、ソース、特にテストケースを調べなければなりませんでした。

私は正直言って、私の「研究」と「学習」のほとんどは偶然です。

たとえば、ほんの数秒前に、C#で「最近の」フォルダを取得する方法を発見しました。私はその質問を見て、それを面白く考えてから、それを探す前に、どうやってそれをするのか分かりませんでした。

私にとっては、本当の「トリック」は、フォーラムで質問したり、質問に答えたり、誤って知識を取り上げたりすることです。それから、私が何かを研究する時間が来たら、私はそれについて少し知っている可能性があり、検索はより簡単で、実装(通常はテストプログラムを最初に実装する)に焦点を当ててそこから進めていくことができます。

+0

ほとんどの場合、ドキュメントによって理解が促進されます。フォーラムをぶら下げても間違いなく効率的です(OPの質問)が、知識のウェブを広げる良い方法です。 – Griffin

1

1)私のタスク

2)いくつかの異なるライブラリでの例を見ては、Google検索、私は私が持っている他のどのようなオプションがわからない場合、例えばLuceneのに自分自身をタイダウンする必要はありません。

3)それは6ヶ月で更新されていない場合はメインページの最終更新日時を見て、が去る((ライブラリとサンプルタスクを検索する)

4)一部の例外を除き、チュートリアルをまだ読まないでください)

5)チュートリアルなしで何が起こっているのか分かりますか?)バック1

6何もありません開始場合ははい続けるとすると、チュートリアル

9を読んで)自分が

8を不合格見る)タスク

7を実装してみます)が実装しようタスク

10)私自身が失敗し、StackOverflowで尋ねるか、著者にメールを送り、ユーザグループに投稿してください(フレンドリーに見える場合)

11)もし私が仕事を終えることができたら、私は研究にふさわしいフレームワークをと考えて、2時間のメインチュートリアルを読んでみることにします(2時間に収まらない場合は、

1

私にはレシピはありません。私はいつも続くステップの意味で、それは主に私が学ぶことのすべてが異なるからです。いくつかのことは私には根本的に新しいものです(Dojoのように、私はJavaのスクリプトに慣れていないので大きな作業です)、以前の知識の一部の拡張(Iknow EJB 2、その注釈、コンセプトに関する構築)

私の一般的な戦略は、「スパイラルとパーク」と表現しています。私は景観に最初に円を描こうとすると、私は公園私はを得ていないという概念はまだを得るが、それは私を心配させないでください。それから私はいくつかの領域に少し深く行くが、もう一度1つに夢中にならないようにしてみてください。スピルラリングうまくいけば私は理解を解除し理解するだけでなく、より多くのものを駐車する必要があります。以下のために何

  • 当初、私は、次のような質問をしたいですか?

  • 私はすでに知っている他のものよりむしろこれを使用するのですか?
  • 何が可能ですか?興味深いスイートスポット。 「AJAXによる素晴らしいアップデートを見てください」

私は大量のスキムリーディングを行います。

次に、私は、より多くの探検をしたいと思います。私はちょっとしたことや良いアドバイスを探し始める。 (例:Javaで:。?"wibble" .equals(VAR)便利な構成である理由)

具体的な手法や情報源:

  • 最も重要なこと:やって!可能な限り早く、私はチュートリアルまたは2つの作業をしたいと思います。私はスパイラルの最初の回路を完成させなければならないかもしれませんが、触って実験したいと思っています。
  • 概要文書
  • 製品文書
  • フォーラムやディスカッショングループ、質問に答えることで学ぶことは私のお気に入りの技法です。
  • 可能であれば、私は指導者を見つけようとします。私は、私の直属の同僚に豊富な知識と経験を持たせることで幸いです。
+0

+1は「つかさ」を記録しています。彼らは後で理解するのに大きな邪魔になることがあります。 – Griffin

1
  1. クイックスタートガイド。
  2. 利用可能な場合は、APIドキュメントを簡単に見てください。
  3. サンプルコードを読む。
  4. メッシングぐらいあなたは迷子にならなければならない(帽子には申し訳ありません)。

小規模なコミュニティのある小さなライブラリ/ APIの場合は、開発者自身に連絡して助けを求めることができます。彼はもう1人が自分のAPIを使用していることに満足しています。

0

私は決してjavadocを読んでいません。そこにはしばしば何もありません。そして、それがあるとき、それは最新でない可能性が最も高い。だから1つは最高に混乱する。

できるだけ簡単なチュートリアルから始めてください。 多くの場合、このチュートリアルでは最後にさらなる情報源につながるため、ほとんどの場合、より深く、深く、進んでいく道のりにあります。

2

あなたの質問に対する答えは、どこに一般性/特異性の連続性があるかによって異なります。すぐに問題を解決したいですか?あなたは図書館の深い理解を深めたいと思っていますか?あなたはこれらの極端な間のどこかにいる可能性があります。 Jeff Atwood has a postは、プログラマがこれらのレベル間でどのように移動するかについて、彼らのニーズに基づいています。

初心者の方は、フレームワークやライブラリの高度なデザイン(または言語、またはそれが何であるかの技術)を、好ましくは設計者の一人が読んでください。彼らが取り組もうとしている問題、設計の背後にある組織の原則、中心的な特徴が何であるかを判断してください。これは、将来の理解が頓挫する概念的な枠組みを形成するであろう。

今すぐジャンプしてください。何かを作りなさい。 誰かのコードをコピーして貼り付けないでください。代わりに、うまくいかないときは、エラー・メッセージとそのエラー・メッセージのヘルプをよく読んで、なぜそのエラーが発生したのかを理解してください。物事がうまくいかないときは、イライラすることもありますが、思考を強いられます。それはあなたが学ぶときです。

1

メーリングリストは質問をする前に先に宿題をしている限り素晴らしいリソースです。

メーリングリストのアーカイブは、CoreAudioに関連するもののほとんどの質問に対して非常に役立ちます。

0

本当にトピックの内容とその情報の量によって異なります。他の同様の図書館や言語に精通している場合は、例題で学ぶことは、あなたにとって新しいトピックのトピックを作成する良い方法です。あなたはよく知っているトピックを取り上げ、「Xを使って実装する方法を理解し、Yを使ってどのように完了したか見ることができます」と言うことができます。

関連する問題