Как не надо писать код

· На чтение уйдёт 2 минуты · (279 слов)

Сегодня в шутку спорил, чей код сложнее для понимания... И тут взгляд сам собой упал на недавний коммент в моем коде :-) Итак, фрагмент будущего клиента игры Берсерк Онлайн:

	private final function gameActionsChanged(e: Event): void {
		// TODO: Убить себя об стенку за такой код --baron
if (Application.application.mainview.battlepanel != null) { Application.application.mainview.battlepanel.updateAllowedActions(); } }

Использование static переменных и методов лично я считаю очень хорошей идеей, особенно во Flash, но - только в случае, если это действительно всего лишь один класс, или ровно один экземпляр класса. Да-да, про синглтоны слышал ;-). Итак, что лично я на дух не переношу:

  • не переношу неверную индентацию и лишние пробелы. (Без разницы, что используется - пробелы или табы, хотя я и предпочитаю последние).
  • ненавижу переменные с заглавной буквы и классы с маленькой буквы.
  • ненавижу дефолтный package - package { }.
  • ненавижу сложные if. с более чем 3 бранчами: if (c1) { } else if (c2) { } else if (c3) { } else if (c4) { }  else { }.
  • ненавижу методы, названия которых написаны с орфографическими/грамматическими ошибками.
  • не переношу методы с большим количеством декларированных переменных, чем помещается у меня в дебаггере во вкладке Variables.
  • приемлю код без комментариев, но ненавижу, когда комментарии не по делу или устарели.

Конкретно в моем коде ничего особо ужасного нет, за единственным исключением. Если тот класс, в котором реализован этот метод, засунуть в любое другое приложение, кроме Берсерк-Онлайн, - все скорее всего скомпилируется, но при попытке вызова этого метода - вылетит Exception. Итого - код с нулевым reusability.

Правильнее было бы использовать в классе BattlePanel примерно такую конструкцию:

berserkclient.addEventListener("changed", actionsChanged);

То есть чтобы интерфейсная часть узнавала о произошедшем только в том случае, когда ей это действительно нужно. :-).

Полезное