Сегодня в шутку спорил, чей код сложнее для понимания... И тут взгляд сам собой упал на недавний коммент в моем коде :-) Итак, фрагмент будущего клиента игры Берсерк Онлайн:
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);
То есть чтобы интерфейсная часть узнавала о произошедшем только в том случае, когда ей это действительно нужно. :-).