今回のテーマはコードの分割
5,000行を超えるメソッド……。そんなプログラムのメンテナンスを頼まれて、途方に暮れたことはありませんか[1]? 逆にメソッドは細かく分割されているんだけど、細か過ぎて流れがさっぱりわからないコードを見たことはありませんか?
本連載のテーマは「良いコード」です。良いコードは可読性が高く、メンテナンス性にも優れています。そのためには、適切な単位でのコード分割が必要になります。今回は、そんなコード分割のポイントについて解説します。
なぜコードを分割するのか
コードを分割すると何がうれしいのでしょうか。たとえば次のようなメリットがあります。
可読性の向上
5,000行のメソッドの話が出ましたが、筆者の経験ではメソッドのサイズが100行を超えると処理の流れを読み解くのが難しくなってきます。逆に30行以下であれば内容を理解するのは容易です[2]。
メンテナンス性の向上
分割により変数のスコープが小さくなったり、本来処理があるべきクラスやメソッドに移動することで、依存関係が整理され、メンテナンス性が向上します。
再利用性の向上
コードを分割するとコードの重複が減り、最利用可能な部品としてのメソッドやクラスを作ることができます。これはよく言われるメリットですが、今回の記事ではあまり深くは立ち入りません。
カプセル化のメリットを活かせる
オブジェクト指向には「カプセル化」という概念があります。メソッドやクラスの具体的な実装やオブジェクトの状態を知らなくても、メソッド呼び出し(メッセージパッシング)するだけで、それぞれのオブジェクトがよろしく処理を行ってくれるというものです。良いコードを実現するうえで重要な概念なのですが、今回の記事ではあえて深くは立ち入りません[3]。
コードの分割についての悩み
それでは、まずは毎回恒例、各界の代表者の方々に「コードの分割」についてコメントしてもらいましょう。
良い仕事をしたい普通のプログラマ

初級~中級のプログラマ

達人プログラマ

おそらく、普通のプログラマの意見に共感を覚える人も多いと思います。もしあなたがそうならば、本稿はあなたのためのものです。ぜひ「処理を自由に分割できる世界」へ踏み出してみてください。それでは、処理の分割について考えを深めていきましょう。