Wenn Sie einen Kollegen hätten, der die Vorteile der Trennung von Bedenken nicht oder nur unzureichend verstanden hätte, um sie in ihrer täglichen Arbeit konsequent anzuwenden, wie würden Sie ihn ihnen erklären?
Wenn Sie einen Kollegen hätten, der die Vorteile der Trennung von Bedenken nicht oder nur unzureichend verstanden hätte, um sie in ihrer täglichen Arbeit konsequent anzuwenden, wie würden Sie ihn ihnen erklären?
Antworten:
Stellen Sie sich vor, Sie haben ein Programm, das veröffentlicht wurde. Ein Kunde kommt und bietet an, Sie für eine Verbesserung einer seiner Funktionen zu bezahlen. Um an das Geld zu kommen, müssen Sie Ihr Programm ändern, um die neue Funktion hinzuzufügen. Einige der Faktoren, die Ihre Gewinnspanne beeinflussen, sind:
Durch die Trennung von Bedenken erhalten Sie positivere Antworten auf diese Fragen.
Schauen Sie sich ein Krankenhaus an und überlegen Sie sich, welche unterschiedlichen Aufgaben bei der Versorgung eines Patienten zu erfüllen sind: Krankenschwestern, Ärzte, Arzthelferinnen, Techniker, Angestellte, Cafeteria usw.
Gibt es jemanden, der weiß, wie all diese Leute ihre Arbeit erledigen? Nein, denn es wäre überwältigend. Sie müssen die verschiedenen Verantwortlichkeiten in verschiedene Rollen aufteilen, und die Berührungspunkte zwischen diesen Rollen sind sehr spezifisch.
Wenn er / sie in einem Büro arbeitet, nehmen Sie es als Beispiel, erläutern Sie die Rolle der einzelnen Mitarbeiter in diesem Büro und fragen Sie ihn, was passiert, wenn diese Mitarbeiter nicht nach ihren Aufgaben aufgeteilt werden?
Ich würde mir ansehen, wie er es versäumt hat, SoC in seinem Code / Design anzuwenden, und das in ein reales Beispiel verwandeln, mit dem er sich identifizieren kann, und das ist offensichtlich unerwünscht.
Wenn er beispielsweise eine Klasse hat, in der der Kunde mehrere Informationen liefern muss, die für diese Kunden nicht relevant sind, dann würde ich die Analogie einer Bäckerei verwenden, in der Sie Ihre eigenen Körner und Hefen mitbringen müssen, wenn Sie kaufen möchten ein Brot.
Ein Beispiel könnte sein, dass ein HTML-Entwickler HTML, CSS und Javascript in separate Dateien aufteilen möchte. Auf diese Weise können Sie das Erscheinungsbild einer Nachricht ändern, indem Sie einfach das CSS oder das Verhalten einer Nachricht ändern, indem Sie die JavaScript-Datei ändern, die separat geladen wird. Wenn Sie eine responsive oder adaptive Site haben, funktioniert dieses Paradigma gut, da Sie je nach Ansichtsfenster des Benutzers oder Benutzeragenten verschiedene CSS- oder Javascript-Dateien laden können. Wenn Sie jedoch den HTML-Code oder die Vorlage ändern, besteht die Möglichkeit, dass die CSS- oder JavaScript-Funktion nicht mehr funktioniert. Diese getrennten Anliegen können auch abhängig sein.
Ein weiterer Ansatz besteht darin, Ihr gesamtes CSS-Javascript und HTML in einer Gruppe von Komponenten oder Modulen zu bündeln. Dies bedeutet, dass Sie Änderungen an einem Modul vornehmen können und dass dies keine Auswirkungen auf andere Komponenten oder Module auf der Seite haben sollte, auf der es ausgeführt wird und die nicht miteinander verknüpft sind. Hier werden die CSS-, Js- und HTML-Dateien zu einer einzigen Komponente zusammengeführt, die Unit-getestet werden kann. Die Trennung der Bedenken erfolgt also in Form einzelner atomarer Komponenten, die einheitlich getestet werden können, anstatt Markup-, Styling- und Verhaltenselemente zu trennen. Dieser zweite Ansatz eignet sich eher zum Erstellen komplexerer Webanwendungen.
bearbeiten. Da ich eine negative Antwort auf diesen Kommentar erhalten habe, dachte ich, ich würde ihn noch einmal besuchen und versuchen, einen Teil meiner POV zu qualifizieren. Leider ist jegliches Feedback hier nicht besonders konstruktiv, aber ich habe eine interessante Diskussion an anderer Stelle gesehen, die sich mit React befasst, der aktuellen heißen Technologie in der Webentwicklung, einem Beispiel aus der Praxis, und fragt, ob sie die Trennung von Bedenken bricht oder insbesondere, ob sie eine von ihnen bricht Das Prinzip der objektorientierten Entwurfsmethodik von Feather.
Die technische JavaScript-Entwicklerperspektive
NO, because JSX is a view language. That's one responsibility.
BUT, this implies that the JS developer is self-enforcing SoC/SRP on his own architecture by not mixing ViewModel concerns in his JSX. This type of vigilance "in the wild" is highly suspect because JSX involves the full JavaScript dialect.
Die UX / UI Designer-Perspektive
YES, because JSX mixes Semantic Content (Model) with Behavior (Controller)
YES, because the intrusion, specifically of JavaScript, into the Semantic Model makes it difficult or impossible for me to play my role and leverage my expertese and skills.
Die Teamperspektive
NO, if both...
Separate files are used for the View (JSX) and ViewModel (JS).
Either there aren't UI/UX/Designers involved, or they are productive working directly with JSX (not very common).
YES, if either...
Everything is in the same file, causing problems for version control or productive use of modern editors.
Members of the team who are comfortable with HTML/CSS but less capable with JavaScript are excluded because of mixture or roles.
Auf der Seite befindet sich auch ein Link zu einer interessanten Präsentation von Pete Hunt von Facebook, in der er über Komponenten und nicht über Vorlagen spricht und die Probleme in der Sprachanwendung aufteilt, anstatt die Probleme des Frameworks, dh Vorlagen, CSS und Javascript etc.
Im Hinblick auf die Trennung Ihrer Bedenken in der Sprache Ihrer Anwendung kann dies die Verwendung verschiedener Muster beinhalten, um Ihren Code in eine modulare Form zu trennen oder zu entkoppeln, die einheitlich getestet werden kann usw.
Zusammenfassend kann die Trennung von Bedenken von Ihrer Rolle oder Sichtweise abhängen, wie an anderer Stelle erwähnt.