良いコ-ドへの道―普通のプログラマのためのステップアップガイド

第4回 コードの分割―その1 見通しの良いコードは適切な分割から

この記事を読むのに必要な時間:およそ 1 分

画像

本連載が書籍化されました。

良いコードを書く技術 ─ 読みやすく保守しやすいプログラミング作法

縣俊貴 著/A5判・240ページ
価格2394円(本体2280円)
ISBN 978-4-7741-4596-9

今回のテーマはコードの分割

5,000行を超えるメソッド……。そんなプログラムのメンテナンスを頼まれて,途方に暮れたことはありませんか注1)? 逆にメソッドは細かく分割されているんだけど,細か過ぎて流れがさっぱりわからないコードを見たことはありませんか?

本連載のテーマは「良いコード」です。良いコードは可読性が高く,メンテナンス性にも優れています。そのためには,適切な単位でのコード分割が必要になります。今回は,そんなコード分割のポイントについて解説します。

注1)
筆者は1クラス30,000行もあり,Eclipseで開くとエディタが落ちるコードを見たことがあります……。

なぜコードを分割するのか

コードを分割すると何がうれしいのでしょうか。たとえば次のようなメリットがあります。

可読性の向上

5,000行のメソッドの話が出ましたが,筆者の経験ではメソッドのサイズが100行を超えると処理の流れを読み解くのが難しくなってきます。逆に30行以下であれば内容を理解するのは容易です注2)。

メンテナンス性の向上

分割により変数のスコープが小さくなったり,本来処理があるべきクラスやメソッドに移動することで,依存関係が整理され,メンテナンス性が向上します。

再利用性の向上

コードを分割するとコードの重複が減り,最利用可能な部品としてのメソッドやクラスを作ることができます。これはよく言われるメリットですが,今回の記事ではあまり深くは立ち入りません。

カプセル化のメリットを活かせる

オブジェクト指向には「カプセル化」という概念があります。メソッドやクラスの具体的な実装やオブジェクトの状態を知らなくても,メソッド呼び出し(メッセージパッシング)するだけで,それぞれのオブジェクトがよろしく処理を行ってくれるというものです。良いコードを実現するうえで重要な概念なのですが,今回の記事ではあえて深くは立ち入りません注3)。

注2)
ここでのポイントは適切なコード分割により可読性が高まるという点です。むやみに分割して,処理があっちこっちに飛んで逆にわかりにくくなっているコードも見かけます。その場合は分割の単位や対象を間違えている可能性が高いです。また,科学的な処理は分割しにくい傾向があるという意見もあります。
注3)
紙幅の都合もあり,今回は可読性とメンテナンス性に絞って解説します。オジェクト指向などの話題は別の機会にできればと考えています。

コードの分割についての悩み

それでは,まずは毎回恒例,各界の代表者の方々に「コードの分割」についてコメントしてもらいましょう。

良い仕事をしたい普通のプログラマ

初級~中級のプログラマ

達人プログラマ

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

著者プロフィール

縣俊貴(あがたとしたか)

学生時代にMSXで制限された環境でのプログラミングの楽しさを学ぶ。以来,オープンソースのWiki実装「MobWiki」の開発や受託開発などを経て,現在はプロジェクト管理ツール「Backlog」,ドローツール「Cacoo」など,コラボレーション型のWebサービスの企画と製品開発を行う。また,Webアプリケーションフレームワーク「Cubby」のコミッタを務める。福岡在住。株式会社ヌーラボ所属。

ブログ :http://d.hatena.ne.jp/agt

Twitter:@agata

コメント

コメントの記入