Ich frage mich, wie ich die Funktionalität innerhalb einer eckigen Direktive nach Rober C. Martins "Clean Code" Buch kapseln kann. Ich möchte Kommentare weglassen und stattdessen Funktionen mit sprechenden Namen verwenden.Angular: Wie Logik in eine Direktive kapseln?
Stellen Sie sich vor diesen Code:
app.directive('myDirective' function() {
return {
link: function(scope) {
// initialize visual user state
scope.visualUserState = {
// some very detailed state initialization
}
}
})
die Last-Funktionalität zu verkapseln, würde Ich mag diesen Code wie folgt ersetzen:
app.directive('myDirective' function() {
return {
link: function(scope) {
scope.initializeVisualUserState = function() {
scope.visualUserState = {
// some very detailed state initialization
}
}
scope.initializeVisualUserState();
}
})
Was Ich mag es nicht auf dem zweiten Ansatz ist, dass " "loadDataFromServer" ist eine Funktionalität, die nur von der Link-Funktion und nicht von der Ansicht verwendet wird. Daher verstoße ich gegen die Regel, dass der Bereich nur Daten und Funktionen enthalten sollte, die für die Interaktion mit der Ansicht verwendet werden.
Auch der Code ist nicht sehr lesbar, denke ich.
Da die Funktionalität sehr private Sachen der Richtlinie behandelt, denke ich, dass die Verwendung und das Injizieren eines Dienstes nicht der richtige Weg ist.
Was wäre eine bessere Praxis, um diese Funktionalität zu kapseln?