C#でよりよいプログラミングをする方法を模索しているときにとある本に出会いました。
その本の名は「リーダブルコード」という本でした。この本のサブタイトルを見た瞬間,より良いプログラミングをするためにはきっとこういう本を読まないといけないのだと思いました。
リーダブルコードの表紙を発見
この本を見つけたとき「これだ!これに違いない!」と思いました。このころ,新入社員も入社してきていた時期でもあり,何かと質問される割に,的確な回答ができない自分が非常に情けなかった時期でした。
「C#でよりよいプログラミングをする方法」というものをとにかく探していました。Webで検索しても「if文の書き方」みたいなものはスグに見つかりますが,より良いコーディングという記事はあまり見つけることができずにいました。
そんな中発見したのがこの「リーダブルコード」でした。
サブタイトル:より良いコードを書くためのシンプルで実践的なテクニック
サブタイトルが「より良いコードを書くためのシンプルで実践的なテクニック」でした。まさにドンピシャの内容ですよね。幸い,値段も2千円台くらいで,技術書としては安い値段でした。この頃はまだ,5千円から1万円程度する本を買いあさる前だったので,本に5千円以上かけるのは勇気のある時期でした。
いまは,5千円以上の本はぜんぜん買うし,奥さんにも「5千円でこの本を書けといわれたら無理なものを,だれかが書いて,たかだか5千円程度で提供してくれる。本てなんてすばらしいの?」という感じの人で,それを聞いてからは確かにそうだなと思い,本当に高めの技術書を買うことにためらわなくなりました。
今はKindleがあるので,さらにためらわずに経った瞬間からスグに読めるので本当にすばらしい時代だと思います。
買ってから一気に読んだリーダブルコード
このリーダブルコードを読んでから一気に読んだことを覚えています。とにかく毎ページ楽しくて,学ぶことの楽しさを感じました。今思えば,内容はプログラム設計の本ではなく,美しいコードの書き方,見やすいコードの書き方という感じの本なので,オブジェクト指向云々という話はほとんど出てきていなかった気がします。
そうは言いつつも,あまり勉強していない私だったので,身になることはたくさんありました。最後のほうにテストコードの話が出てきましたが,知識が乏しかった私は,テストには興味がないといって,そのあたりの章は読み飛ばしていました。なんて恐ろしいことでしょう。今では考えられませんね。今は,テストコードがもっとも大事だと思っていますから。
作法に関して
作法に関して言うと,コーディングルールというような名前の本がC#版とVB版で出ていますね。これはリーズナブルに図書館で借りて読んだ記憶があります。
このコーディングルールを一応一通り読んでおく価値はあると思います。ただ,この本に書いてあることがすべてではないですし,この本を読んだ後は,マイクロソフト直伝の「クラスライブラリ設計」という本を読むことをおすすめします。
この本はマイクロソフトのクラスライブラリーを作っているチームの人が書いているので,C#のクラスを作っている人と,同じコーディングルールで記述できるようになるため,こんな有益なことはありません。
最初の方の章では,大文字小文字の使い分けでアッパーキャメルやキャメルの使い分けや,大文字で記述すべき文字などが整理されています。
その後,クラスやインタフェースの使い方や,例外の使い方が解説されています。
当時の私は,例外とは予期せぬときに発生するもので,できるだけ発生させないようにするものだと思っていました。発生しても,どうやってもみ消すかを考えていました。
しかし,この本を読んで,例外をどのように使うかを学ぶことができました。エラー状態を表現するのはそうなのですが,エラーが発生した瞬間,どこまでさかのぼってthrowしていくかなどが解り,大変勉強になりました。
例外を継承して,InnerExceptionとして扱うなど,考えもしなかった考え方がたくさんありました。
とにかくC#で仕事をするなら全員「クラスライブラリ設計」は必読です。4000円くらいで安いので,いつも手に取れるところにおいておいて,プログラミングする感じがいいと思います。
ここまでが1部:オブジェクト指向に出会うまで
という感じで,ここまでが,C#を勉強する順番の第1部終了です。オブジェクト指向に出会うまでの話をしてきました。今後はオブジェクト指向,デザインパターン,テスト駆動開発,ドメイン駆動開発と続いて行きます。
構成はたぶん3部構成になると思います。
- 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