C#

【C#】より良いプログラミングをするための7ステップ

C#で良いコーディングをするためには7つのステップがあります。
何をどんな順番でやっていけば良いのか、僕の経験をベースにまとめています。

C#の本を買って勉強したり、システム会社に入社して言語研修といった形で学ぶことがほとんどだと思います。
しかし、その本や教本がC#の文法にしか書かれていない、オブジェクト指向のコードしか書かれていないと結局文法しか学べません。

もちろん文法を学ぶことは入り口として必須となりますが、文法を学んだからといって「良いプログラミング」はできません。
この記事ではより良いプログラミングをするためには、「どのように」「どのような順序で」やっていけば良いのかをまとめました。

自分の書いたコードに自信がありますか?


プログラマー1年生の頃、自分の書いたコードに自信がありませんでした。

なぜ「自分のコードに自信がもてないのか」

それは、文法しか学んでいないので、このコードが正解なのか、適切なのか自分で判断できないからなのです。
エンジニア1年目や2年目は、研修で勉強したとはいえど「文法しか学んでいない」状態です。

本や研修で学ぶ際は「お手本」があります。
しかし、実務で扱うコードにおいてはお手本がないので「適切か」が分からないのです。

では、どのようにすれば自分のコードに自信がもてるのか解説していきます。

より良いプログラミングをするための7ステップとは?

良いプログラマーになるためには次の7ステップをふむ必要があります。
なぜ、これらステップを学ぶ必要があるかというと、今までずっと同じこと、文法を覚えただけでは良いプログラミングができないからです。

例えば、If文やfor文の使い方が分かっただけでも、そのコードが適切なのか分かりませんよね?
良いプログラムというものは、1つの指標として「保守性が保たれているもの」と言われています。

直しやすさ、影響範囲が明確になっている、追加・変更しても既存の動作に支障がないことが分かりやすくなっているのが「良いプログラム」と言えます。

より良いプログラミングをするための7ステップ
  1. 文法を学ぶ
  2. 保守性を考慮する
  3. バグのないプログラミングを意識する
  4. どこに何を書けば良いのか判断する
  5. 処理全体を把握する
  6. 自信をもって開発する
  7. チーム全員で統一されたルールを守る

保守性を考慮する

この「保守性」というものは、プログラミングをする上で「めちゃくちゃ大事」になります。
システム開発では、最初にシステムを作ってそれで終わりというものはあまりありません。

不具合が出たら修正をしないといけないですし、バージョンアップが必要になったら機能を追加してどんどん進化していきます。
今日動いていれば、今年動いていれば「問題ない」というわけではありません。

システムを稼働させている以上、これらを常に対応していかないといけないわけです。

バグのないプログラミングを意識する

プログラミングをしていて最初からバグがないものを書くということは非常に難しいです。
しかし、先人たちのバグがないコーディング手法というものは世の中出回っていますし、現場で実際に動いておりバグがないコードもあるでしょう。

まずは、それらを参考にしてもしもバグが出てしまっても、すぐに対応できるということが大切です。

ただ文法を書くだけではなく、バグがないプログラムを書く意識をしてみてください。
ここで必要になってくるスキルが「どこに何を書けば良いのか判断できる」ことです。

どこに何を書けば良いのか判断する

データベースよりデータを取得し、画面に表示するといった1連の流れがあったとします。
この時に、どこに値を格納するのが良いか、どのようなクラスに機能を持たせるべきかをきちんと見極められなければ、「保守性」や「バグの抑制」というのは難しいでしょう。

どこに修正を入れるべきか、どこに何を書けば良いのか分かっている状態になることで、「保守性」や「バグの抑制」になります。
この「どこに何を書けば良いか分かる」ことは「プログラム設計」を学んでいく必要があります。

処理全体を把握する

プログラム設計にはアプリケーション全体を把握するスキルが必要になります。
アプリケーション全体を見たときに、「どのような処理があるのか」を把握できる書き方をしているコードと全部を読まないと分からないコードでは後世に引き継ぐにもうまくいきません。

この機能とこの機能を読んでいればある程度全体が分かるというような簡単な仕様になっているべきなのです。
理想としては、プログラム設計書を読むよりもコードを読んだほうが速いし分かりやすいというのがレベルになるまでプログラムコードの質を上げることです。

そのようになると、全部のプログラムコードを読まなくても、機能追加や修正が容易におこなえるのです。
このような状態になれば、保守性は保たれ、バグのないプログラムがかけるようになり、次第に自信を持ってコーディングすることができます。

チーム全員で統一されたルールを守る

保守性、コーディングの質の向上、処理の把握ができるようになったら最後のステップ「チームで統一する」ことを意識しましょう。

システム開発は1人で行うということは少なくて、大体チームで作業していきます。
IT業界では「全体で統一したコーディングができる」ことは当たり前です。

5人であれば5人が同じ意識を持って、同じ書き方ができるそのようなルールにしたがって開発を行います。
このようなルールをまとめているのが、「コーディング規約」と言います。

このようにみんなが同じ意識、同じ書き方をしているとコードを確認する際にもズレが生じずスムーズにできます。
Aさんは変数を全部小文字で、Bさんは全部大文字でとバラバラだと見辛くて仕方ありません。

チームでしっかり決めた状態でコーディングするというのが非常に重要となっています。

このようなことを1つずつできると、バグがなくなり、プログラムが整理されて見通しが良くなります。
これらができていないと、バグが発生するたびに処置が大変になってきてしまうので、このような流れは開発においてめちゃくちゃ大切になります。

自主学習で差をつけろ!


「プログラミングを勉強する!」となってもなかなかモチベーションが上がらなかったり、結構しんどいことがいっぱいあります。
僕も本を買っては、初日は10ページとか頑張るのですが…次の日は仕事で疲れてるから1ページもやらなかったりして途中で投げ出してしまうことがほとんどでした。

ここで、あることをしたら、モチベーションが保たれ、継続してやることに成功した方法があるので、それを紹介します。
もちろん、お金はかかりませんし、誰でも今日から実践できます。

それは…
「習慣化させてしてしまう」ことです。

例えば、「毎日1時間は勉強する!」と机に向かうとしましょう。
いきなり、1時間フルでがんばってみるっていうのは、今までやっていない人にとってはかなりハードルが高いですし、なかなか難しいです。

まず最初のうちは、とりあえず10分向かってみましょう!
本当に小さく始めるのが良いのです。

プログラミングの本を買ったら、とりあえず演習問題を「1つだけ」やってみる。
本当にそのレベルでいいです。

そのようにしていくと、意外と「次の問題やってみよう!」「もう一つだけやってみよう!」というようにトントンで進めていけます。
大きな目標で、1日10ページやる!って目標立てても、人間は怠けます。

そして、やらない日が1日でもあるとだんだんノルマが甘くなっていき、気づいた頃には自然とやめてしまうと言うことが多いです。
僕も1年目の頃は本当に何もしていませんでした。

何もしないと言うものは、本当にめちゃくちゃもったいないので、「昨日よりも今日」「今日よりも明日」という日々の積み重ねが重要だと気づいたのです。
このように1つずつ積み重ねると、1ヶ月後、半年、1年後とどんどん知識が増えてきます。

そのようになるために、勉強は「習慣化」させることを忘れないでください。

意外なことに、1つやると次が気になってどんどんやりたくなってきます。
その1つやった勢いで、次の問題もやってみると次第にやめどきが分からなくなっていきます。

このように勉強は、重たい石が転がっていくような感じで進んでいくもんじゃないかと思っています。

そして、インプットが習慣化していくと、実はエンジニアとしてかなり最強になれます。
僕が、会社員エンジニアをやっていた時は、周りを見渡してみても勉強している人はほとんどいませんでした。

皆さんの周りはどうですか?同じように何か勉強やられている方って少なくないですか?
意外と社会人って勉強していない人って多いですよね。

そんな中、1日でもうちょっと勉強していくと少し差が生まれてきます。

“生活費”のための残業はやめるべき

仕事において不必要の残業するのはやめましょう。
納期前など、時には残業が必須になってくる時はあります。

しかし、生活費や遊ぶお金のためといって、普段から残業する人っていらっしゃいます。
これは、あまり意味がないのでやめるべきです。

なぜなら残業してる人は、新しい技術を学ぶチャンスを失っているからです。
朝9時から仕事を始める人が、夜9時10時まで働いてら、家に帰ってから勉強なんてできませんよね。

大体、疲れて寝てしまってそこから勉強する時間はなかなか取れないでしょう。
土日にできる!といって、実際できれば良いですけれど、私の過去の経験上、平日遅くまで働いていると、土日は自分の好きなことを!となってずっと寝ていたり遊びにいったり、生産性のない時間をだらだら過ごして終わるだけだと思います。

やはり、その勉強できる・できないということは、「習慣」があるかないかなのです。
したがって、不必要な残業はせずに「1時間」でもいいので、平日勉強してみましょう。

このようにすると、だんだん強いエンジニアに成長していきます。
僕がフリーランスとしてやっていけているように、あなたもやればなれます!

仕事で「新しい技術」を学ぶということはなかなか難しい

仕事の中で新しい技術を学ぶということはなかなか難しいことです。
私はSIer事業で仕事をずっとしてきて、そのほとんどの業務がSES(準委任契約)でした。

大体の現場は、これまでの経験と現場にいる既存の知識で賄え、スキル成長は全くと言っていいほど望めませんでした。
既存の知識で働いてる時間は、全くといって良いほど「自己の成長」にはつながっていないです。

このような場合、自分で学んでいくしか方法はありません。
まずは、本でもなんでも問題ないです。

1日1演習やってみるということから初めてみませんか?
僕がWebアプリケーション開発を一通り学べたサービスを紹介します。

こちらのコードキャンプです。
無料レッスンもできるので、まずは試してみてそれからやるか・やっぱり違うものを利用してみるを判断しても良いかなと思います。
CodeCamp
実際に僕はこの講座のマスターコースを受講しました。
コードキャンプメニュー
ユーザーメニューは、購入したコースごとに分かれおり各演習の最終課題に合格すると「合格」とつきます。
コードエディター
コードキャンプにはオンラインエディターがあるので、ソフトを買ったりDB設定など一切いりません。
その日から何も用意せずに勉強できます。

ぜひ、体験だけでもやってみる価値はあると思うので、お勧めします!
こちらからチェック!