オブジェクト指向プログラミングプログラミングの基礎勉強を終えた方が、次のステップアップとして「オブジェクト指向」の習得を選択されることがございます。私がオブジェクト指向プログラミングを学んだ時に感じたことを少しお話させていただきます。オブジェクト指向プログラミングのメリット実装のアイデアがあって、「What」から「How」への変換作業をプログラマーはコードという形で表現します。オブジェクト指向の利点で感じたことは「What」から「How」のギャップが非常に少ないと思いました。「何をしたい」ということを正直に書けば、いつの間にか「How」が作れる感じです。手続き型言語の場合、「何をしたい」から「どうするか」までがギャップが多く低レベルの関連の処理が多く混じり、プログラムも長くなります。『「A」という値を得るために「B」を処理して「C」を処理して「D」を処理して・・・・』の積み上げが必要なくなります。コードリーディング時に、深みにはまらなくて済むので楽ですね。「なにをやりたい」「どうやりたい」が非常に近くなった気がしました。クラスの命名規則が順守されているプロジェクトではクラスライブラリを駆使することにより、処理の詳細を知らなくても済みます。プログラムを追いかける際に、処理内部まで『知る必要がない』ことを意味します。これは、スマフォを使うのに中身の回路図を理解する必要がないのと同等の意味です。ここは、大変重要なポイントです。クラスが公開しているメソッドの仕様さえ押させておけばあとは忘れることができるからです。人間の脳のワーキングメモリーは大きくありません。いま現在、我々の世界プログラミングコードは、とてつもなく巨大だからです。プログラマにとって「パターン認識」と、調査ポイントを絞れることがとても重要なスキルとなります。初学者が膨大なソースコードの波に飲まれて挫折してしまう1番のポイントは汎化させたソースコードの構造パターンに触れる経験が、圧倒的に少ないことが原因の1つと私は考えます。プロとアマの境界線がここにあるとも言えます。オブジェクト指向プログラミングのデメリット抽象化を導入すると、「何やっているか」は理解できるのですが「どうやっているか」が分からないことが多くなります。オブジェクト指向の実装は、プログラマーのスキルにもかなり依存します。様々なプロジェクトで様々な方々と仕事をしてきましたがオブジェクト指向を使うための前提条件を理解していない人が多いようにも感じます。仕様書から「C言語」で実装した場合、誰がプログラミングしても大体同じコードになりますが「java」「c#」「c++」などは人によりコードの内容がかなり異なります。これは組織にコーディング規約があっても同じことが言えます。オブジェクト指向が不要なケースオブジェクト指向の利点として、硬くて柔らかいものを作ることができます。パーツとして使うだけなら硬さだけがあれば十分なのですが拡張して機能を追加する場合、柔らかさが必要になります。極論すれば、今後の改修で硬いものだけを組み合わせる場合は、オブジェクト指向は不要です。今後改修が入らない場合、例えば使いきりのアプリケーションの場合であったり保守でお金が取れないケースなどは、コストをかけてオブジェクト指向で実装するメリットがありません。関連記事プログラミングでもっとも大事な事https://menta.work/post/detail/14347/9BSOoOhvVU3D3IwUNjGFこの記事を書いた人に相談してみる並列化担当プログラマー歴20年のエンジニアです。歌って踊れるエンジニアですが、並列化・デバッグがもっとも得意です。ノウハウをお伝えできます。ベストプラクティスを、効果的に織り交ぜながらご指導させていただきます。並列化担当プログラマー歴20年のエンジニアです。歌って踊れるエンジニアですが、並列化・デバッグがもっとも得意です。C/C++メンタープラン初心者が最初に身につけるベストプラクティスをお伝えします。新入社員が開発現場に出て最初の3か月間に立ち向かわなければならない問題MENTA人気プログラミング言語ランキングMarkdown記法の書き方Markdownを使った書き方をご紹介します。約3,000名のメンターから選べるプログラミング、デザイン、マーケティング、起業など学びたいスキルでピンポイントに探せます。見つからない場合は、メンターを募集することも可能です。個別に教えてもらえるあなたが悩んでいることをダイレクトに相談して、マンツーマンで解決までたどり着くことができます。リーズナブルスクールなどの企業ではなく、個人のメンターと直契約するため比較的リーズナブルに教えてもらうことができます。