私は約 1 年間プログラミングをしてきましたが、私が書いたものはすべて機能しています。初心者のプログラマーにちょっとしたガイダンスを提供できる、ソフトウェア設計に関する (無料の) 優れた本があるかどうか知りたいです。ソフトウェア設計に入る思考プロセスについて少し知っていれば、それほど多くの問題はないと思います。
18 に答える
Head First Design Patternsは、GoF の "Design Patterns" 本のより穏やかなイントロダクションかもしれません
Steve McConnell のCode Completeは、ネイティブでサポートされていない言語で優れた戦略を使用する方法など、コードに関する多くの優れたガイドです。
Martin Fowler のRefactoringは Design Patterns に大きく言及していますが、まあまあのコードの優れたカタログであり、それを記述するためのより良い方法です (私は数年前に「Code Complete」を読んだのとほぼ同じ時期にそれを読みました [tsk tsk]デザイン パターンを読んだり、「リファクタリング」を行ったりしたことは、自分が書いたコードの見方に大きな影響を与えました。
これらはどれも「無料」ではありません。しかし、あなたはどれだけ良いアドバイスをしたいですか?自分のキャリアに投資しようとしているなら、これが最も安価な方法です。
DRYとYAGNIは初心者にとって良い出発点であり、 OOPを学習して理解する必要があります。
デザイン パターン(DRY や OOP よりも少し高度で抽象的なもの) については、無料の Design Patterns - Java Companion から学ぶことができます。Python ではないという事実は気にする必要はありません。古典的な設計パターンはどこにでも適用できます。
さらに先に進みたい場合は、DDD ( Eric Evans による無料の DDD ブック) と、もちろんユニット テストをご覧ください。信じられないかもしれませんが、コードとデザイナーとしてのあなたを改善します。
デザインパターンに関する本が欲しいようですね。
デザインパターン - 再利用可能なオブジェクト指向ソフトウェアの要素 をご覧ください。ただし、Python 固有ではないことに注意してください。
Python 設計パターンについては、このオンライン リソースを利用することもできます。
Stackoverflow ユーザーの@S.Lottも、彼が書いた非常に優れた Python リソースをたくさん持っています。それらは彼の Stackoverflow ページで見ることができます。
他の人のコードを読んでください。これは、より優れた設計原則を学ぶための最良の方法です。職場で他の人のコードを読んだり、フォーラムで他の人のコードを読んだり、オープン ソース プロジェクトを調べたりしてください...そして決してコーディングをやめないでください。
Journeyman to Masterの著書Pragmatic Programmer を参照してください。これは、あなたが探している知識のギャップを埋めるのに役立つ素晴らしい本です.
プログラミングの経験が 1 年あるので、デザイン パターン (またはヘッド ファースト デザイン パターン) はお勧めしません。.
アンドリュー・ハントとデビッド・トーマスによる「The Pragmatic Programmer: from Journeyman to Master」という本は、おそらく、現在のレベルで最高の成果を上げるための最良の策だと思います。以下は、トピックと内容の優れた要約です (Coding Horror の Jeff Atwood から)。自分でコピーを購入する余裕がない場合は、相互貸借を使用してください。
言語にとらわれず、心に留めておくことができる新しいプログラマーに強く推奨される古典的な本である他の 2 つのタイトルは、Fred Brooks によるThe Mythical Man-Month (1995 年に発行されたアニバーサリー版) と、Steven McConnell によるCode Complete (第 2 版) です。 .
これらの本は、現在の開発段階で圧倒されることなくプログラミングの知識を広げ、より優れたプログラマーになるための強固な基盤を作るのに役立ちます。これらの本はすべて、本格的なプログラマー向けの推奨 プログラミング 本のトップに常にランクインしており、どれも「古い」ものであり、明らかに一時的な流行ではなく、特定の言語、環境、またはツールセットに制限されない永続的な推奨事項です。
注目に値する他のいくつかの原則:
CRAP:サウンドデザインの 4 つの原則- 使いやすさのために、これらは知っておくとよい原則です。
Pablo の今月のトピック - 3 月: SOLID Principles - いくつかの良いアイデアもあります。
私は間違いなく別の本を追加します。BobMartinによるCleanCodeは、保守可能なコードの書き方を説明するのに非常に優れた本だと思います。非常によく構造化されて読みやすいコードにつながるいくつかの簡単なルールを紹介します。
優れたソフトウェア設計を学ぶための最良の方法は、さまざまな方法でコードを記述し、他の人が書いたコードを読み、何が機能し、何が機能しないかを直接学ぶことです。
コードを書くときは、次の質問をしてください。
- どのようにテストしますか?
- どうすればデバッグできますか?
- 私は自分が何度も何度も何をしていると思いますか?
他の人も自分の経験に基づいて他のアイデアを持っていると思います。
この本をチェックしてください: Head First Design Patterns ...文字通り。見てみな。図書館から。
私は、コンピュータ プログラムの構造と解釈をお勧めします。これは、書籍形式でオンラインで入手でき、オンライン コースも利用できます。
これは設計パターンに関する本ではありませんが、アプリケーションを構築するための優れた基礎を開発するのに役立ちます。
これは本ではありません (本は時代遅れです) が、Portland Pattern Repositoryを数時間かけて読むのは間違いなく良いことです。
これもチュートリアルではありませんが、優れたコード例があり、デザイン パターンやプログラミング全般についても同様に優れた説明があります。プログラマーのように考える方法を学ぶための優れたリソースです。
あなたはおそらくオブジェクト指向プログラミングについてもっと学ぶべきです。Pythonに基づく素晴らしいチュートリアルは次のとおりです。
オブジェクト指向プログラミングは、解決しようとしている問題の内容を反映した方法でプログラムを編成する方法です。
こんにちは
...リッチー
別の言語を学びましょう!私はPythonが大好きです。誰もが言っていることにもかかわらず、Javaを知っているので、Pythonの方が優れています。(Javaで始めると、最初は不格好なpythonを書くようになると不満を言う人もいますが、Pythonで何かを行う簡単な方法をすでに知っている場合は、これから安全になります。)
ここで少しチェーンソー手術をしましょう。初めてPythonを書くのは簡単です。私はそれをvimで書いています。なぜなら、私はvimを愛しているからです。IDEがあれば、Javaの保守とリファクタリングは簡単です。私はEclipseでJavaを作成します。これがないと、絶望的になるからです。しかし、重要なのは、抽象化を容易にするツールで抽象化を使用することを強制する言語で書くと、脳がゆっくりと形作られ、より抽象的にコーディングできるようになるということです。優先される抽象化はわずかに異なりますが、Pythonに戻すことができます。
Head First Design Patternsは、初心者が始めるのに適した場所です。ギャング・オブ・フォーの本よりもおそらく入りやすいでしょう。
うわー、なぜ今まで誰も理論に深く入り込むべきではないと言わなかったのだろうか。1 年後 Ur コードは醜いです。それについては何もしません。あなたがやりたいことのほとんどをやり遂げるなら、それはすでにとても素晴らしいことです。しかし、U は理論で Ur の脳をごまかすことはできません。書き続けて、Ur コードに腹を立ててください。それがより良い文章を書くための最良の方法です。できる限り頻繁に、より読みやすく、使いやすく、保守しやすい方法で作業コードを記述する方法について、時間をかけて考えてください。AND: 他の人のコードを読んで、Ur コードのレビューを入手してください! Uよりも上手に書ける人は世の中にいるはずです。例から学びましょう!
そしておそらく、Ur のプログラミング時間の 20% (つまり、U が毎日コーディングする場合、1 年に 2 か月以内!) で何らかの理論が得られます。
大量の理論から始めてみませんか? U は Ur の動機と Ur の本能を殺します。しかし、U がそこに座って問題を解決しようとするとき、それはほとんど正しい本能に関するものです。理論が多すぎると、問題と解決策を考えすぎてしまいます。しかし、Ur の本能は、Ur がどれだけ読んでも、Ur の経験のレベルにあります。
(英語が下手で申し訳ありません。私の母国語ではありません)
Gang of four book - Design Patterns を入手してください..しかし、それに従いすぎず、どこでも Singleton を使用してみてください :)
それを知って賢く使ってください。また、その後、優れたオープン ソース コードを調べて、その構造から学ぼうとします。Google コードと sourceforge をお勧めします。
あなたのバックグラウンド (およびある程度の経験) によっては、基本的なアルゴリズムについても調べたいと思うかもしれません。Introduction to Algorithmsのような本は良い出発点です。
それに加えて、Head First Design Patterns にも投票します。GoF は、後で参照するのに適しています。
本を忘れてください。私の経験 (OO デザイン コースのインストラクターおよびライターとしての時間を含む) では、デザインができる人もいれば、できない人もいます。それは、彫刻家のような才能です。せいぜい、才能がなければ、このテーマに関する本を読んでも、うまく設計できないでしょう。