Entscheidung zum Umgang mit Events in Angular 1

Heute habe ich mehr eine Frage oder eine Diskussion. Ich wollte das nicht auf Twitter machen, weil mir die Frage zu komplex erschien. Auf Twitter würde ich dann diskutieren und hier den Sachverhalt erklären.

In einem großen Projekt auf Angular-Basis muss ich mich entscheiden, wie ich mit Events umgehen will. Es wird wahrscheinlich einige Events geben, die quer durch die gesamte WebApp fliegen. Von einem Formular zu Feldern, von Datenänderungen im Backend (WebSocket) an Masken, vom CacheManifest an eine Notifcation-Direktive und so weiter. Also kann es schnell unübersichtlich werden. Also möchte ich die Events gerne zentral verwalten.

Möglichkeit 1

Natürlich könnte ich den normalen Angular-Weg nehmen und einfach mit

scope.$broadcast("eventname", {args: 123});
scope.$on("eventname", function (e, args) {});

arbeiten. Aber dann habe ich immer wieder und überall die Strings mit den Eventnamen und es wird eben schnell unübersichtlich. Dafür versteht jeder der Angular gesehen hat sofort was passiert. Nur eben nicht wo überall.

Möglichkeit 2

Ich könnte nur die Eventnamen in einer Konstante halten. Hier hätte ich zumindest die Bezeichnungen der Events alle beieinander und über die Injections kann ich schnell nachvollziehen, wer welche Events verwendet.

Möglichkeit 3

Ich könnte auch die Events selbst in eine Factory auslagern. Hier hätte ich dann sehr wenig Code um ein Event aufzurufen und die Logik um ein Event zu feuern liegt an einer zentralen Stelle und kann schnell umgestellt werden. Außerdem hätte ich eine Stelle wo ich BreakPoints einhängen kann um die Events zu überwachen. Es ist aber ein relativ großer Overhead.