0

一番いいのは?いくつかの引数を受け取り、それを処理する低レベルのメソッドを操作します。または、その名前が示すとおりのことを行う高レベルのインターフェースをオブジェクトに持っていますか?

例えば。:

低レベル:

<?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。しかし、それを使用すると、コードが非常に読みやすくなり、メソッドごとに異なる実装を行うことができます。

どう思いますか?

ありがとう。

4

2 に答える 2

1

低レベル (きめの細かい) メソッドは再利用性が高くなります。高レベル (粒度が粗い) メソッドの方が使いやすいです。ユーザーインターフェイスレイヤーに近いほど、より高いレベルのメソッドが好まれ、実装の詳細を隠すことができ、あなたが言及したように読みやすくなると思います。

于 2013-09-27T01:22:49.680 に答える