一番いいのは?いくつかの引数を受け取り、それを処理する低レベルのメソッドを操作します。または、その名前が示すとおりのことを行う高レベルのインターフェースをオブジェクトに持っていますか?
例えば。:
低レベル:
<?php
class Html {
public function renderSelect($name, $options) {
//
}
}
class Repository {
public function lists($repositoryName, $keyColumn, $valueColumn) {
//
}
}
# usage
$html->renderSelect('campaign_id', $repository->lists('campaigns', 'id', 'name'));
$html->renderSelect('account_id', $repository->lists('accounts', 'id', 'company'));
上級:
<?php
class Html {
public function renderSelect($name, $options) {
//
}
public function renderCampaignsSelect() {
return $this->renderSelect('campaign_id', $repository->listsCampaigns());
}
public function renderAccountsSelect() {
return $this->renderSelect('account_id', $repository->listsAccounts());
}
}
class Repository {
public function lists($repositoryName, $keyColumn, $valueColumn) {
//
}
public function listsCampaigns() {
return $this->lists('campaigns', 'id', 'name');
}
public function listsAccounts() {
return $this->lists('accounts', 'id', 'company');
}
}
# usage
$html->renderCampaignsSelect();
$html->renderAccountsSelect();
特に、高レベルのオプションは、アプリケーションの規模が拡大するにつれて大きくなります。より多くのエンティティが登場すると、より多くのメソッドが必要になりrenderSponsorsSelect
ますlistsSponsors
。しかし、それを使用すると、コードが非常に読みやすくなり、メソッドごとに異なる実装を行うことができます。
どう思いますか?
ありがとう。