Это хорошая практика для передачи аргумента, который является инъекционным сервисом? - PullRequest
0 голосов
/ 01 марта 2019

Полезно ли передавать аргумент, который является инъекционным сервисом, в функцию?

Привет всем, я попробовал какое-то исследование, но пока не смог найти ответ на вопрос выше.Я работаю с angular и сталкиваюсь с каким-то кодом, который вводит меня в заблуждение, какую практику следовать / избегать?

Сценарий:

shopping-util.ts

export class ShoppingUtil {

    public static buildShopingNote(material, bService: BService) {
        if (!material) {
            return '';
        }
        return bService.doSomeThing(material);
    }
}

b-service.ts

@Injectable()
export class BService {
    public doSomeThing(input): string {
        let result = 'do something with input';
        return result;
    }
}

Интересно, стоит ли нам вместо этого перенести функцию buildShopingNote в бизнес-сервис, чтобы мы могли внедрить BService при инициализации сервиса?И это тот же ответ для других языков программирования (Java, C ..), что я предполагаю, что это будет тот же ответ?

Любая идея приветствуется!

1 Ответ

0 голосов
/ 01 марта 2019

Если вы повторно используете bService несколько раз, ясно, что служба будет перемещена в конструктор класса.Однако, если он используется только один раз, вы можете выбрать, как с ним бороться.В текущем коде вам даже не нужно создавать класс ShoppingUtil, так как нет необходимости создавать этот класс, пока он имеет только статические функции.Вы можете создать пространство имен или экспортировать функцию непосредственно из Util.Или переместите buildShopingNote на BService

...