はじめまして。
未経験でエンジニアの道を選んだ、文系大学出身の者です。
本記事は、研修のなかで「オブジェクト指向」やそれをベースとする言語、またそのお作法に触れたての頃に抱いた疑問に対し、
この4か月ほどで得た知識と経験を基に自問自答するだけのものです。
分かりやすさを重視しており、理論というよりは観念的な話になりますので、
理論の面での先達からのご意見ご指摘をお待ちしております。
また、本記事がプログラミング言語を学び始めた方々の一助となれば幸いです。
疑問その1「『インスタンス』?ソースコードをコピペすればよくない?」1
「クラス」と「インスタンス」、用語は理解できてもそれらをわざわざ分ける意味が、分かっていませんでした。
結論から言うと、**ソースコードのコピペダメ、ゼッタイ。**です。
さらに言うと、「Ctrl+C」とか「Ctrl+V」で、「人の手で」コピペするのがダメです。
ならどうするのか。
答えは簡単、PC側やプログラム側への丸投げです。
人から機械へ、コードではなく処理のコピペを丸投げするための仕組みが「インスタンス」になります。
クラスは原本、生成されたインスタンスがコピーにあたります。
同じ理由から、基本的にメソッドもインスタンスを経由して呼び出してやります。
メリットは2点。
-全く同じ処理を確実に複製できる。
-インスタンスを生成するコードに不備がなければ、修正時にいじる場所は、インスタンスの原本=クラスだけ。
⇒修正箇所の捜索が楽。修正に掛ける時間も削減できる。
避けて通れないコードの保守やリファクタリングの際に、特にその恩恵にあずかることができます。
(リファクタリングそのものの解説は本稿の趣旨にそぐわないため、割愛します)
疑問その1まとめ:コピペするのはコードではなく処理そのもの、コピペ自体を機械に丸投げしよう
疑問その2「C#にでてくるLINQって何?」
オブジェクト指向言語の1つであるC#を学んでいると、突如現れる謎の存在、「LINQ」。
C#を理解しようとするノリのままLINQを理解しようとすると詰みます。
私は詰みました。
例えると関東の雑煮と関西の雑煮くらい違います。
そのくらい、オブジェクト指向と集合指向(=SQLやLINQでのものの考え方)は異なります。
後生ですから、LINQを学習する前にまず、腰を据えてSQLを勉強してください。
LINQはSQL、つまり集合指向をC#にえいやと突っ込んだパーツですので、
先にある程度集合指向を理解しないと不毛に頭を悩ませ続けることになります。
(なお、「SQLを勉強したおかげでC#とLINQの物の見方が違うとわかりアハ体験した話」は、別途記事にできたらと考えているところです。)
疑問その2まとめ:LINQより先にSQLを理解しよう
※今後も思い出し次第、随時追記していこうと思います。
2019年11月6日 1.1稿
-
いただいたコメントを参考に、一部表現を変更。
2019年11月5日 初稿 ↩