2009-06-26 2 views
3

私は現在プログラムを勉強しています。私はCSクラスを履修しませんでしたので、基本的には下から始めています。私は何年もコードをまとめることができましたが、大きなプロジェクトでエンゲージするために必要な基本的な概念については十分に理解していませんでした。オブジェクト指向は明らかですが、そこにある概念のいくつかを理解し始めていると感じています。 MVC、UML、SCRUM、SOLIDなどの話題や手法がたくさんあります。私はこれらの多くを見てきましたが、ほとんどの説明がいくつかの理解を必要とするように私はいつも困惑しています他の概念。プログラマーが学び、使用すべき重要な概念は何ですか?

私はこのことを「正しい」方法で学びたいと思うので、どこから始めるのですか?

ソフトウェアアーキテクチャ/設計/開発の基礎をすべて理解できるようにするためには、私が理解しなければならない最も包括的な構成要素は何ですか?

私には何が欠けていますか?

私は基礎をクリアするまで待つことができ、また待つべきコンセプトはありますか?

+0

可能な複製は、http://stackoverflow.com/questions/164048/basic-programming-algorithmic-conceptsおよびhttp://stackoverflow.com/questions/402984/main-concepts-in-oopを参照してください。 –

+0

少なくともCW – fretje

答えて

4

おそらくSOLID原理が最も重要です。

MVCなどのパターンを使用する背後にある動機づけを理解している人、なぜパーシスタンスの無知を重要なものと考えるのかなど。彼らは大多数の良い実践の中核を成しています。

+0

私はSOLIDの原則を説明しただけですが、Unclebobの論文「デザイン原則とパターン」を必ず読んでください。ありがとうございました! – tplive

4

緩いカップリング、高い凝集力。

書籍については、Code Completeは、少なくともある程度のすべてをカバーしています。

+0

+1のコードが完成しました! – gath

+0

私は本を見て、非常に興味深いWebリンクから見ていきます。あなたのヒントありがとう! – tplive

0

私は"Grady Booch et al。"によるオブジェクト指向分析とアプリケーションの設計をお勧めします。最新のeditoinには、MVC、UML(彼が発明した)、ソフトウェア開発の全過程を管理する方法などのOOADの概念の詳細な説明があります。本書の第2部では、5つのサンプルシステムを開発することで、すべての事例を例示しています。

+0

私は同僚からBoochらの "Unified MOdeling Language User Guide"を借りて、最初のいくつかの章を熟読し始めました。他の本も見ていきます!私は例で学ぶのが大好き!ありがとうございました! :) – tplive

+0

ooadはちょうどumlへのガイドよりもはるかに詳しく調べられています:-) – MadH

2

ソフトウェア開発は巨大なアリーナであり、あまりにも早く過ぎないように注意する必要があります。関数型プログラミングの方向に向かない限り、OO設計とプログラミングを取り巻く概念を完全に理解し、これがあなたの基礎であるべきであることを確認することから始めることをお勧めします。

よく理解すれば、デザインパターンをもっとよく理解し、いつ使用するかについての感触を得ることができます。

個人的に私の好きな言葉は非常に純粋なOO言語であるAdaですが、私が仕事をしているビジネスの世界では、まだたくさんあるC#で働いていることがわかるまで、より活気のある雇用市場がこれを上回っています。

プロジェクト管理について心配する前に、開発スキルにもっと集中する必要があるので、この段階でスクラムについて心配する必要はありません。

最も重要なことは、可能な限り多くのコードで作業し、多くの優れた参照ソリューションをダウンロードし、理解するまでコードを処理し、開発動向を把握してください。

実行可能な場合は、非常にインスピレーションを与える可能性があるので、開発者会議に参加することも検討してください。

+0

巨大な部分はまさに私の質問を促したものです - 私は何から始めればいいのですか?お返事をありがとうございます! – tplive

0

もう一つの良い1は、もちろんあなたの疎結合のアイデアを与えるだろうGoFのによってデザインパターンで、コードの効率的なカプセル化と再利用の方法、など

0

アルゴリズムの一部に関係するものについては、どんな本を取りますこれは特定のプログラミング言語に限定されない。私のお気に入りはアルゴリズムの紹介T.H. Cormenらですが、いくつかの点で少し理論的になりますが、私は特に、あなたがそれを信じることを要求するのではなく、特定のことを証明しているときに好きです。

0

現代の汎用言語で作業しているときは、パターン(MVCまたはModel-View-Controllerが1)でハンドルを取得することをお勧めします。 "four of gang"による本は、これを読むために読まなければならない、あるいは少なくともいくつかを研究し、それを参考にする必要がある。 clicky

リファクタリングは、あなたのアーセナルにあるべき別の概念です。このテーマに関するMartin Fowlerの本は非常に読みやすく、上記のパターンを理解するのに役立ち、UMLについての少しの説明も含まれています。

つ以上のハイパーリンクそう...のためのアマゾンで

検索投稿できません:リファクタリング、あなたのデザインを伝えたい既存のコード

の設計の改善をUML(統一モデリング言語)多くの人にとって選択肢の「ツール」です。しかし、UMLは大規模で扱いにくいですが、Martin Fowler(やはり)は本質的にそれを煮詰めることができました。アマゾンの

検索:UML蒸留私は学習に多くのメリットがあるとは思わない、

SCRUMは、ソフトウェア開発グループを管理するために使用される多くの方法の一つである(あなたは最新のものを得ることを確認してください)それはあなたがちょうど出発するとき、またはあなた自身で始めるときです。特に詳細ではない。

PS ...それがお役に立てば幸い:私はまだ話を聞いていないSOLID、他の誰かがあなたを助けるために持っています。

2

ACRONYMS(リストしたものを含む)と方法論(tm)から離れてください。少なくとも最初は。

良い本を読んでください。これから始める:Pragmatic Programmer。おそらくIntroduction to algorithms by Cormen et alからアルゴリズムとデータ構造を学びます。

多くのコードを書いてください。練習は何よりも重要です。

+0

良い本はいつでも歓迎します。しかし、私は何かを取る前に私は "装備"であることを知る必要があります。例えば、私はSitePointの本「Build Your Own WebSite Using ASP.NET 3.5」を完成させています。それは良い学習経験でしたが、私はまだ各トピックのちょっとしたヒントに触れたと感じています...だから私はそれぞれの話題をさらに掘り下げて、例を上げてそれを "私のもの"にする必要があります。 – tplive

1

ユニットテストでソフトウェアをテストする方法。それが可能なのは、他の問題の90%を自動的に解決します。なぜなら、あなたが周りにいてもテストできないからです。

テストの方法がわかったら、デザインなどの高度なトピックから始めましょう。

+0

ユニットテストについて聞いたことがありますが、興味深い話題ですが、それはあまりにも多くの洞察力を必要とするだろう..今私は再びそれを見ます。あなたのヒントありがとう! – tplive

+0

あなたはすでにソフトウェアを単体テストしているだけで、単体テストを投げるだけです:コードを書いて実行し、結果を確認し、バグを修正し、繰り返してください。コンピュータが正しいことと間違っていることを確認して、それをあなたのために行う。プロジェクトオイラーが好きな人は –

0

プログラミング分野の問題を感じるためには、現実世界の問題をコーディングする必要があると思います。

次に、オブジェクトが重要な理由を理解するために、より良い背景があります。次に、オブジェクトを管理した後、パターンとオブジェクト指向の原則が重要である理由を学びます。

個人的には、ロバートCマーティンのアジャイルソフトウェア開発を強くお勧めします。

しかし、問題が解決されたことが感じられない限り、長くて面倒なことがあります。私は、解決される問題が本当のであることを感謝する前に、最低でも500-1000時間のコーディングが必要になるかもしれないと恐れています。

そして、あなたは本質的な心の痛みを感じる前に、おそらく問題を読んでから、この種の本をページターナーにしなければならないでしょう。

残念ながら、あなたが開発しなければならないサウンドプラクティスの多くは、時間の経過とともにコードを使用した後でしか評価されません。あなたが多くのエクササイズをして後にコードを放棄しただけでは、 "それが機能する"ため、あなたはすべての最大の痛みを逃してしまいます。私たちの業界にはない高級品であり、「技術的負債」は、大規模なコードベースを持つ人にとって非常に実に高価です。

0

私はこのような自分の質問に答えるちょっと愚かな感じ.. :)しかし、私はコードを書くことを学ぶために見つけた1つの貴重な資源、オイラープロジェクトは、それは基本的にその数理問題の集まりだhttp://www.projecteuler.net

にされますあなた自身の解決策を書いて解決します。特定の問題に対する答えを見つけたら、さまざまな解決策が議論されている問題のフォーラムにアクセスできます。私は、a)挑戦を解決すること、b)他の人々のアプローチを読むこと、c)そこにいくつのプログラミング言語があるのか​​を知ることに驚きました! :)

問題は簡単に始まります(解決した人の数で知ることができます)。そして、より困難で困難な問題に進みます。

現在のところ、私は前の2つの問題を解決して問題3に取り組んでいます...あなたのレベルにかかわらず、それらを離れて始めることをお勧めします!

+0

です。 http://www.pythonchallenge.com/も試してみてください。 これはPythonに焦点を絞っていますが、Pythonなしの問題を解決できます。私はあなたが次のチャレンジを解除する必要があるので、それが大好きです。 – bastianneu

関連する問題