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

初級~中級のプログラマ

達人プログラマ

おそらく,普通のプログラマの意見に共感を覚える人も多いと思います。もしあなたがそうならば,本稿はあなたのためのものです。ぜひ「処理を自由に分割できる世界」へ踏み出してみてください。それでは,処理の分割について考えを深めていきましょう。
良いコ-ドへの道―普通のプログラマのためのステップアップガイド
- 最終回 配列/コレクションを利用した抽象化―その5 Step4:配列/コレクション化して抽象化する
- 最終回 配列/コレクションを利用した抽象化―その4 Step3:関連のあるデータをオブジェクトに
- 最終回 配列/コレクションを利用した抽象化―その3 Step2:可読性を高めるためのメソッドの抽出
- 最終回 配列/コレクションを利用した抽象化―その2 Step1:ベタなコードで書いてみる
- 最終回 配列/コレクションを利用した抽象化―その1 配列/コレクションって何?
- 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その4 Step3:リフレクションAPIで変換ルールを動的に適用する
- 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その3 Step2:メタ情報をExcelに移動する
- 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その2 Step1:ベタなコードで書いてみる
- 第5回 メタプログラミング―Excelを使ったDSLを作ろう―その1 メタプログラミングとは?
- 第4回 コードの分割―その6 Step4:クラスに分割する


