先月8月から受託系IT企業で働き始めました。
一旦は社内業務ということで、開発言語C#にて勉強を進めているのですが早速クラスという壁にぶち当たりました。
まずクラスとは?
++C++;というサイトによると、
操作の対象となるものをオブジェクトといいます。 オブジェクトを作る場合、まず設計図が必要になります。 内部がどういう構造になっているのか、外部からどのような操作をすることが出来るのかを決めてやるわけです。 このようなオブジェクトの設計図のことをクラス(class)といいます。
とのこと。
私なりの解釈として、「ロールキャベツを作る」という目的(オブジェクト)に対して「食材を用意する」「切る」「煮る」というように役割(クラス)を分けてあげるようなものかな、という答えに行きつきました。
確かに分けたほうが分かりやすい。私個人だけではなく、色んな人と共有しながらでも使いやすい。また、仕様変更になった場合も少ない作業量での変更対応がしやすい。
とりあえず様々なメリットがあることが分かりました。
どういう基準でクラス分けをするのだろう
それでは実装してみようということなり、VisualStudioを立ち上げてみましたがすぐに疑問が出てきました。
1つのクラスに対してどこまで機能を持たせたらいいのだろう、、、
調べてみても私の中で分かりやすい説明を見つけられず、会社の方にも聞いてみたのですが、難しい話らしくこれといった明確な答えは出なかったように思えます。
私の中でイメージしやすいなと思ったのは、「これは◯○という役割を持ったクラスです」と簡潔に説明できるようにする、ということ。
上記のロールキャベツの例でいくと、「食材を用意するクラスでは、ロールキャベツに必要な食材を全てまとめて並べます。」「切るクラスでは、大きい食材から順番に同じ大きさに切ります。」というようなイメージかなと思いました。
これから意識すること
なんとなくイメージはできたので、実際にシステムやアプリケーションを作る際に上手なクラス分けをするために以下のようなことを意識、挑戦してみます。
・とにかくコードを書く。
汚いコードでも、クラス分けが違っていても、自分の考えや実現させたいことをコードで表せるようにする。
たくさんコードを書く中で、上手くクラスを分けられることもあれば、分けられていない時も出てくるので次書く時に何をどう改善したらいいかを学習する。
・コードを書く際に本を読みつつ理解を深めながら書いてみる。
がむしゃらにコードを書くのもどうかな、と思うし早くコードを書くのに慣れたいのでインプットもしつつ。
今のところはC#で住所録を作ろうかなと考えているのですが、他に何か良さそうな課題が思いつけば着手していこうと思います。
私の理解が甘かったり認識が違うかもしれないですが、とりあえずの現状整理と目標をまとめてみました