Подход к именованию контроллеров Angular.js - PullRequest
0 голосов
/ 14 февраля 2019

Я разрабатываю приложение на Angular v1.x по следующему сценарию.

  1. Пользователь (продавец) может предложить товар покупателю
  2. Пользователь (покупатель)) может принять или отклонить предложение

Когда пользователь нажимает, чтобы добавить предложение (1) или (2) принимает решение о предложении, которое я использую, используя модальную услугу, внедренную в мое приложение.Примером может быть:

app.controller('SampleController', ["$scope", "ModalService", function($scope, ModalService) {

  $scope.showAModal = function() {

    // Just provide a template url, a controller and call 'showModal'.
    ModalService.showModal({
      templateUrl: "yesno/yesno.html",
      controller: "YesNoController"
    }).then(function(modal) {
      modal.element.modal();
      modal.close.then(function(result) {
        $scope.message = result ? "You said Yes" : "You said No";
      });
    });

  };

}]);

Для каждого модального я могу установить используемый контроллер.Мои первоначальные мысли заключались в том, чтобы иметь один «offerController», используемый обоими модами, который бы обрабатывал логику в обоих случаях.Но для каждого случая должны быть разные вызовы API для службы REST, чтобы получить начальные переменные представления.Например:

  • , когда покупатель хочет видеть все предложения, получившие звонок,
  • , когда в первом сценарии пользователь делает предложение, текущие предложения не требуются

Я не вижу способа изолировать логику в одном контроллере и выполнять вызов в зависимости от того, какие у меня есть случаи.

Так что мне следует использовать два контроллера, если да, то чтобудет подходящим соглашением об именах?Я думал, что есть «offerAddController» и «offerDecideController».Но я не уверен, что это правильно, так как «добавить» и «решить» - это действия, и неправильно иметь имя действия в моем контроллере.

Похоже, что мой контроллер сам по себедействия, которые теперь заставляют меня сомневаться в моем подходе.Должен ли я подходить к этому по-другому?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Согласно вашему описанию

  1. для покупателя, нам нужно получить хороший объем данных, поскольку мы выбираем все предложения, которые уже есть у покупателя.
  2. Для продавца мы не делаем никаких вызовов API (может быть, мы можем сделать вызов API, где мы можем показать все предложения, которые продавец сделал , или что-то в этом роде)

Теперь, если мы посмотрим на Единая ответственность принципал SOLID , мы должны сделать 2 отдельных контроллера, так как происходит гораздо больше, чем просто запросПользователь (покупатель / продавец) об их выборе, т. е. мы также показываем все предложения, которые у него есть.Это также помогло бы нам расширить наш соответствующий код в будущем, в случае, если мы планируем манипулировать данными перед отображением в пользовательском интерфейсе.

, поэтому было бы разумно иметь лучшее имя файла htmlкак offerConfirmation.html.Потому что мы также показываем предложения.В настоящее время вы использовали yesno.html.

Для имен контроллеров, я думаю, мы можем использовать что-то вроде:

  1. BuyerConfimationController
  2. SellerConfirmationController

Я выбрал это имя, потому что такие имена, как offersAddController и offersDecideController, не требуют пояснений для нового разработчика, если он не знает, что Продавец может add и Покупатель будет decide.(хотя это может показаться очевидным).

Я знаю, может показаться очевидным знать add и decide для пользователя (продавца / покупателя), но есть хороший шанс, что роли могут стать более сложнымив будущем (или если мы имели дело с какими-то особыми пользователями, связанными с доменом, нам нужно понять роли пользователей , прежде чем касаться кода).Сохранение как можно более точных имен контроллеров поможет любому новому разработчику напрямую перейти к конкретным контроллерам и внести необходимые изменения.

0 голосов
/ 14 февраля 2019

Согласно соглашению об именах контроллера, было бы лучше, если бы вы выбрали имя, которое буквально описывает функциональность контроллера.Я рекомендую вам выбрать имя контроллера как [действие] [Тип] [Контроллер].В этом случае подходящими именами будут AddOffersController и DecideOffersController.

...