@vetsmen

Адекватный ли конструктор?

Пытаюсь сделать конструктор, который я буду создавать в цикле определенное количество раз для работы с разными параметрами, сделал что-то подобное:
const setUserMagager = (config) => {
	init: () => {
		this.client = new ClientUser();
		this.clientManager = new ClientManager({
			user: this.client
		});

		this.options = {
			name: config.name,
			key: config.key
		};

		this.cookies = [];

		client.login(options);
		this.viewer();
	},
	viewer: () => {
		this.client.on('login', () => {
			this.client.setLogin();
		});

		this.client.on('msg', (session) => {
    	serveSession(session);
		});

		this.clientManager.on('user', (data) => {
			serveNewUser(data);
		});
	}
}

Интересует адекватность вышеизложенного когда. Особенно смущают моменты в виде вызова функции viewer из init, а так же обработчики on() в viewer (при получении каких-либо данных они должны будут вызываться), будет ли это работать вообще?
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
rockon404
@rockon404
Frontend Developer
Не понимаю назначения этой сущности, но это не конструктор. Метод viewer назван неправильно, так как название не говорит ничего о том, что этот метод делает.
Конструкгор это когда так:
spoiler
function SetUserManager(config) {
  this.client = new ClientUser();
  this.clientManager = new ClientManager({
    user: this.client
  });

  this.options = {
    name: config.name,
    key: config.key
  };

  this.cookies = [];

  client.login(options);
  this.viewer();
}

SetUserMagager.prototype.viewer = function() {
  this.client.on('login', () => {
    this.client.setLogin();
  });

  this.client.on('msg', (session) => {
    serveSession(session);
  });

  this.clientManager.on('user', (data) => {
    serveNewUser(data);
  });
}

или так:
spoiler
class SetUserMagager {
  constructor(config) {
    this.client = new ClientUser();
    this.clientManager = new ClientManager({
      user: this.client
    });

    this.options = {
      name: config.name,
      key: config.key
    };

    this.cookies = [];

    client.login(options);
    this.viewer();
  }
  
  viewer() {
    this.client.on('login', () => {
      this.client.setLogin();
    });

    this.client.on('msg', (session) => {
    	serveSession(session);
    });

    this.clientManager.on('user', (data) => {
      serveNewUser(data);
    });
  }
}

Складывается впечатление, что вы везде пытаетесь использовать ООП и плодите сущности там, где они не нужны и где лучше использовать функциональный стиль.

Насчет ваших обработчиков ничего не скажешь так как не ясно, ни что такое ClientUser и ни что такое ClientUserManager.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
OneTwoTrip! Москва
от 120 000 до 200 000 руб.
1Win Санкт-Петербург
от 80 000 до 200 000 руб.
D2C.io Екатеринбург
от 70 000 руб.
19 авг. 2018, в 00:49
600 руб./в час
18 авг. 2018, в 17:54
6000 руб./за проект
18 авг. 2018, в 16:00
60000 руб./за проект