今回はC#を勉強する順番を解説して行きます。ダメダメ文法プログラマーだった私が数年間でドメイン駆動開発まで勉強した勉強方法を順を追って説明して行きます。
最初に結論書いておきます
- 基礎文法
- コーディングルール,各種作法
- オブジェクト指向
- デザインパターン
- テスト駆動開発
- リファクタリング
- ドメイン駆動開発
こんな順番がおすすめです。
基礎文法
if文とかfor文とかListとかの使い方を最低限学んでおく必要があります。今後デザインパターンなどの賢者の書いた本を読んでいくのに,「インタフェースはどうやって書くんだったけかなー」なんて感じでは本を読むのがしんどくなって投げ出してしまいます。
とはいえ,オブジェクト指向の要素であるカプセル化,インタフェース,継承や,少しクセのある実装になる非同期プログラミングは現代のプログラミングに必須とはいえ,最初から完全にマスターしておく必要はありません。今後勉強していく中でおいおいマスターしていけば良いでしょう。
取りあえず,クラス,変数,if文,for文,配列,リストくらいは最低限何も見なくてもコーディングできるようにしておきましょう。
コーディングルール,各種作法
コーディングの作法も大切です。序盤に覚えておけば,変なクセがつかないので良いでしょう。変数名の頭文字を小文字にするとか,命名方法など,職場での規則もありますが,マイクロソフトが題している「クラスライブラリー設計」という本に大体大切な事は書いてありますから,一度すべて読んでおきましょう。マイクロソフトでクラスライブラリーを製作しているチームの方が書かれている本なので,本家のプログラミングルールを学ぶことが出来ます。職場のルールを確立するより,マイクロソフトのルールを職場に持ち込んだほうが全体がぶれなくなって良いでしょう。
オブジェクト指向
ある程度プログラミングが書けるようになってきたら,オブジェクト指向を学びましょう。
オブジェクト指向に関する本は色々出ているので,自分にあった本を探すのが良いでしょう。オブジェクト指向の要素や原則があるので色んな本を読んで勉強しましょう。
デザインパターン
オブジェクト指向の本を読むといろいろ書かれてはいますが,考え方の話がおおいので,結局どんな実装をするのがよいのかが分からなくなります。そのレベルまできたら,デザインパターンを学びましょう。デザインパターンとは,オブジェクト指向の具体的な使い方をまとめた「ノウハウ集」です。頭の良い先人がプログラミングのパターンをまとめてくれています。これを学ぶことが,賢者に近づく道となります。
テスト駆動開発
テスト駆動開発は,現代のプログラミングには必須の知識です。テストコードの書き方がわたらない人間がチームにいたら,書き方を教育して,全員がテストコードを書けるようになりましょう。テスト駆動開発の考え方は,少しのテストコードを書いて,そのテストコードを成功させるために少しの本番コードを記述します。あとはその繰り返しを行い,本番コードを作ってきます。
テスト駆動開発の中に,オブジェクト指向を行う大切な要素はすべて含まれているといっても良いくらい,テスト駆動開発はオブジェクト指向を学ぶ上でも大変有益なものです。
リファクタリング
リファクタリングとは,良くないコードを良くすることです。マーチンファウラーのリファクタリングという本に詳しいやり方は記述されているので,そちらを参考されてください。簡単に言うと,ダメダメプログラミングを発見したら,そのプログラミングに対してテストコードを記述し,そのダメコードにバグが混入しないようにして,ダメコードをイイコードしていくという手順です。色々なパターンを収録したカタログ集がリファクタリングという本に書かれています。
ドメイン駆動開発
以上を学ぶと,プログラミングに必要な要素はすべてそろっているのですが,すべてが点と点に分かれていて,うまく1つにまとめる知識が必要になります。そのすべてをまとめてコーディネートする知識がドメイン駆動開発となります。
この知識を得ることで,アプリケーション全体の見通しがよくなり,保守性の高いプログラミングをする事ができます。
- C#erが5年目までに学ぶべき7ステップ!!
- C#を勉強する順番!オブジェクト指向からドメイン駆動開発まで#1-1
- C#を勉強する順番!とりあえず最低限の文法や開発環境の使い方の知識は必要#1-2
- C#を勉強する順番!WindowsFormsプログラミングで電卓なんかを作ってイベントなどを使えるようにする#1-3
- C#を勉強する順番!企業でのシステム開発とかだとDBを使うのでC#とDBをつなげる技術#1-4
- C#を勉強する順番!ボタンクリックイベントにだらだら書くのはなんか違う気がしてくる#1-5
- C#を勉強する順番!良いプログラミングのお手本がないとどうして良いのかわからない#1-6
- C#を勉強する順番!プログラミング初級講座とかいう大手の研修を受けてみたが#1-7
- C#を勉強する順番!良いプログラムとはリーダブルコード?コーディングルールを学ぶ#1-8
- C#を勉強する順番!第2章 オブジェクト指向との出会い#2-0
- オブジェクト指向を学ぶって事はデザインパターンを学ぶって事なんだな#2-1
- ドメイン駆動開発がオブジェクト指向をうまくコーディネートしていて最強みたい#2-2
- C#を勉強する順番!ドメイン駆動開発をするにはテスト駆動開発の知識が必須?#2-3
- C#を勉強する順番!テストコードのないプログラムは全部レガシーコードって呼ぶらしい#2-4