なんとなくAPEXを書いていたのですが、オブジェクト指向言語ですので、もう少しオブジェクト指向言語っぽく書いてみようと思いました。そこでコレクションオブジェクト/ファーストクラスコレクションなるものを初めて聞いたのでそれのメモ。
開発環境
APEX
対象読者
APEX書いているけど、オブジェクト指向っぽくない書き方をしている方
コレクションオブジェクト/ファーストクラスコレクションとは?
コレクションを独自のクラスでラップすること。
コレクションオブジェクト/ファーストクラスコレクションをすると何が良いの?
今まで以下のような同じ型のオブジェクトを複数持つ配列やコレクションを扱うコードが複雑になりがちだったのを一つのクラスで書ける。
・for文などループ処理のロジック
・配列やコレクションの要素の数が変化する(可能性がある)
・個々の要素の内容が変化する(可能性がある)
・ゼロ件の場合の処理
・要素の最大数の制限
要するにいままで適当に書いていたところを一つのコレクションに集約できるので、
保守がしやすいってことですね。
課題1
・取引先数を計算する機能を追加する
今までの書き方
List<Account> accounts = new List<Account>;
// …(省略)
// 取引先数
return accounts.size();
コレクションオブジェクト/ファーストクラスコレクションを使った書き方
class Accounts {
List<Account> accounts;
Integer count(){
return accounts.size();
}
}
課題2
・明細合計を計算する機能を追加する
今までの書き方
List<Detail> details = new List<Detail>;
// …(省略)
// 明細合計
integer sum = 0;
for (Detail detail : details) {
sum += detail.amount;
}
return sum;
コレクションオブジェクト/ファーストクラスコレクションを使った書き方
class Details {
List<Detail> details;
Integer sum(){
sum = 0;
for (Detail detail : details) {
sum += detail.amount;
}
return sum;
}
}