ボトムアップ方式による分割の例
それではいよいよコード分割の過程を見ていきましょう。ここではボトムアップ方式でコードを分割していきます。
例で使用するコードは、クライアントにXMLを返却するWeb APIです。Web APIといっても、組織情報とユーザ情報の一覧をXML形式で返すだけの単純なものです(リスト1)。唯一特殊な仕様として、組織(division)、ユーザ(user)の要素を通して共通の連番を表すindex属性をセットします(リスト1の太字部分)。
Step1:ベタなコードで書いてみる
まずベタに処理を実装してみます。完成したコードはリスト2、図1です。処理の流れを簡単に説明します。
①でXMLを作成する準備としてDocumentオブジェクトを作成しています。JavaではDOM[9]のDocumentオブジェクトを使用して、XMLの要素を組み立てます。②でルート要素の「data」の追加、③④のブロックは組織要素、ユーザ要素の追加です。それぞれのリストをもとに1件ずつ要素を追加しています。作成したXMLを⑤⑥でXMLの文字列に変換して出力しています。
比較的単純な処理なのでこれでも問題なさそうですが、以下の点は改善の余地があります[10]。
- 要素を作成する部分など共通的な処理をメソッド抽出することで、可読性が高まる部分がある
- 一部でしか使用していないのにスコープが長い変数(factory、builder、rootNodeなど)が存在する
- 1メソッドのコードが長いため、処理の流れや全体像を把握しにくい
それでは、Step2以降でこのあたりを改善していきます。