3.9 構造体とオブジェクト指向の違いを知る

Goはオブジェクト指向言語を名乗っていません。オブジェクト指向をきちんと学んだ人には役立つ機能がいくつかありますが、JavaやC#、RubyやPythonといった言語で利用されているテクニックを完全にはサポートしていません。

Javaの世界では、親のコントロールクラスを継承して必要なメソッドを再定義しフレームワークから利用する、といった大規模なフレームワーク風のコーディングスタイルがあります。これはmain()関数が見えない、「ハリウッドの法則」1にのっとったもので、一見コード量が少なく効率も良さそうに思えますが、フレームワークの進化が進めば進むほど、ソフトウェアの構造を考えて実装するという経験が得られず、「ソフトウェアの仕組みや開発技術を学ぶ」よりも「フレームワークの作法」を学ぶことが要求されるようになります。ジュニアな開発者でもレールから外れることなく、一定の成果をあげられるという利点がありますが、プログラマーとしての成長が難しいという欠点があります。

1

ハリウッドの法則とは、フレームワークが必要に応じてアプリケーションコードに実装されたメソッドを呼び出すというプログラミングのスタイルです。ハリウッド映画の監督が(必要に応じて)俳優を呼び出す所から名づけられているそうです。

3.9.1 構造体の用途

オブジェクト指向言語のクラスに近いものは、Goの構造体ですが、オブジェクト指向の観点で見た構造体の用途は、フレームワークのレイヤーを構成する部品というよりは、やや小さなものです。

  1. ライブラリの機能を呼び出すメソッドを集約したインスタンス

  2. インタフェース経由で他から呼び出されるエントリーポイント

  3. データセットを持ち運ぶためのバリューオブジェクト ...