@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 (при получении каких-либо данных они должны будут вызываться), будет ли это работать вообще?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы