Где разместить (класс) зависимость в другом javascript классе? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть класс с именем Tour, в котором есть метод с зависимостью от другого класса с именем City

. Я могу поместить зависимость вверху файла, как в

* 1006. *

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

insertAfter(afterCityName, newCityName, appendAtEnd=true) {
  const City = require('./City');
  const cities = this.cities;
  ...

, но имея это в методе также кажется не идеальным.

В идеале я бы подумал, что конструктор, но каждая попытка, которую я сделал, имела неправильный синтаксис, например:

constructor(cities=[]) {
  this.cities = cities;
  ...
  const City = require('./City');  // No, assigned but never used
  City = require('./City');  // No, City is not defined
  this.City = require('./City'); // No, City is not defined
}

Как его разместить в конструкторе (и все же заглавные буквы класса)?

1 Ответ

1 голос
/ 11 марта 2020

Соглашение, которое я видел и предпочел, находится в самом верху файла. Это совершенно ясно показывает, каков ваш импорт. «Скрытый импорт» в середине файла может привести к неожиданностям.

Когда вы выполняете рефакторинг, и вам нужно перемещать файлы, легко переходить от одного файла к другому, быстро осматривая верхнюю часть, чтобы проверить, что пути импорта установлены правильно. Это не относится к встроенному импорту.

Имейте в виду, require() удаляется, с этого момента import, где import лучше всего работает в верхней части файла, например:

import City from './City';

Этот стиль хорошо вписывается в другие соглашения, такие как Python, Ruby или C и C ++, в которых используются соглашения, такие как #include <city.h>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...