ここまで4回にわたってC#で勉強する順番について解説してきました。
プログラマーの会社や,メーカーなどに就職して,最初の1年くらいは,これまで解説したようなWindowsFormsのプログラミングや,イベントや変数や,データベースとの接続部分なんかの実装をメインで覚えていくと思います。
そしてだらだらっとプログラミングしても動作するので最初は何も問題ないと思っていると思いますが,自分が作ったプログラミングを改造したり,修正したりし始めると,とたんに保守性の悪さに気がつくと思います。
保守性というのはプログラムの直しやすさのことです。保守性が高いとは,プログラムの修正がしやすい事をあらわします。保守性が低いとは,プログラムを修正しづらいことを言います。要するに,どこかプログラムの1行を変更した影響が,どこまで広がるのかが分かりづらく,結局アプリケーション全体をテストしなおさないといけないようなプログラムは保守性が悪いプログラムといいます。
1年か2年働いて,自分のプログラムは動いてはいるが,動き続けるプログラムではないことに気がつきます。
ボタンクリックイベントにだらだら書くのはなんか違う気がしてくる
それだけだと厳しいことに気がつく
本を読んだりしても,なんとなくクリックイベントにだらだらとプログラミングを書くのは良くないような記述を見かけるんだけど,じゃあどう書けばいいか?というとなかなか回答が見つから,なんかうまくいかない,ちゃんとしたプログラミングができているか自信がもてないという状況でした。
改造するたびに調査とかコードの解析がしんどい
改造するたびに,自分のプログラムの悪さを感じていました。例えば重複コードがあるし,微妙に違う似たような関数があるし,修正することで,どれくらい他のプログラムが影響を受けるか良く分からないようなプログラミングでした。
チーム内のコーディングが統一されていない
チーム内のコーディングが統一されていませんでした。個々のプログラマーの好きな感じで書いていたので,ばらばらで,たまに共通関数は申し合わせて造ったりしていましたが,それ以外の部分は結構人それぞれが書くような感じでした。
共通化メソッドを造ったからって美しいコーディングとはいえない
共通化メソッドを造ったからといって,美しいコーディングとはいえません。例えばボタンクリックとキーボードのF12を押したときの処理が同じだからといって,関数を切り出したからといって,それが良いコードというわけではあります。
そりゃ,クリックイベントとキーダウンイベントの両方に同じコーディングがあるのは最低のプログラミングですが,その2つを共通かして1箇所の関数を呼び出すようにしたから良いプログラムになったという単純な話ではないという意味です。
書く場所が違うだけは意味ない
フォーム画面にプログラムをゴリゴリ書いてはいけないといわれたからといって,新しいクラスに関数をpublicで作って,それを呼ぶようにしたからといって,良いコードになったとはいえません。ましてや,意味なく別のクラスに処理を書かれると,可読性が下がるだけです。
別のクラスに書くにはそれなりの意味を持たせないといけません。
一番簡単な意味の持たせ方は,テストコードを書きやすくするためです。テストコードの解説をするにはまだ早いので,時期がきたらお話します。
クラスを作ってstaticな関数にしたからOKじゃない
クラスをstaticにしてどこからでも呼べるようにして共通化を図るのはやめてください。ピンポイントで,static関数を造っていくのは効果的ですが,例えばデータベースのProductテーブルを検索してくるのにProductクラスのGetDataをstaticな関数にして呼び出してはいけません。
こういう部分はインタフェースを使う必要がありますが,これに関してはオブジェクト指向を解説するときに解説したいと思います。
- 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