回答:
リリースされたプログラムがあると想像してください。顧客がやって来て、その機能の1つに対する機能強化に対する支払いを申し出ます。お金を稼ぐには、プログラムを変更して新しい機能を追加する必要があります。利益率に影響を与えるものには次のものがあります。
懸念を分離することで、これらの質問に対してより積極的な回答を得ることができます。
病院を見て、トリアージナース、医師、医療助手、技術者、事務職員、カフェテリアなど、患者へのケアの提供に関与するさまざまな役割をすべて考えてください。
それらのすべての人がどのように仕事を成し遂げるかを知っている人はいますか?いいえ、それは圧倒的だからです。彼らは異なる責任を明確な役割に分離する必要があり、それらの役割間のタッチポイントは非常に具体的です。
彼/彼女がオフィスで働いている場合、例としてそれを取り、そのオフィスの各スタッフの役割を説明し、それらのスタッフが彼らの仕事に従って分けられないならば、何が起こるか彼に尋ねますか?
私は彼がどのようにコード/デザインにSoCを適用できなかったかを見て、それを彼が関係できる実世界の例に変え、それは明らかに望ましくない。
たとえば、クライアントがクライアントに関係のないいくつかの情報を提供する必要があるクラスがある場合、購入したい場合は自分の穀物や酵母を持ち込む必要があるベーカリーのアナロジーを使用しますパン。
1つの例は、html開発者がhtml、css、およびjavascriptを個別のファイルに分離したい場合です。この方法では、CSSまたは何かの動作を変更するだけで、個別にロードされるjavascriptファイルを変更することで、何かのルックアンドフィールを変更できます。レスポンシブまたはアダプティブサイトがある場合、このパラダイムはうまく機能し、ユーザービューポートまたはユーザーエージェントに応じて異なるcssまたはjavascriptをロードできます。ただし、htmlまたはテンプレートを変更すると、cssまたはjavascriptが破損する可能性があります。これらの個別の懸念も依存する可能性があります。
別のアプローチは、すべてのcss javascriptとhtmlをコンポーネントまたはモジュールのグループにバンドルすることです。これは、1つのモジュールに変更を加えることができることを意味し、他のコンポーネントや、そのモジュールと並行して実行されるページ上の他のコンポーネントには影響を与えません。ここで、css、js、およびhtmlファイルは、単体テストが可能な単一のコンポーネントにマージされます。そのため、懸念の分離は、マークアップ、スタイル、および動作要素の分離ではなく、単体テストが可能な個々のアトミックコンポーネントの形で行われます。この2番目のアプローチは、より複雑なWebアプリケーションの作成により適しています。
編集。このコメントに対して否定的な反応を受け取ったので、私はそれを再訪して、私のpovのいくらかを修飾しようと思った。残念ながら、ここでのフィードバックは特に建設的なものではありませんが、React、Web開発の現在のホットテクノロジー、現実世界の例を見て、懸念の分離を壊すか、特にFeatherのSOLIDオブジェクト指向設計手法の原則。
技術的なJavaScript開発者の視点
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.
UX / UIデザイナーの視点
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.
チームの視点
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.
また、このページにはFacebookのPete Huntからの興味深いプレゼンテーションへのリンクがあります。彼はテンプレートではなくコンポーネントについて語り、フレームワークの懸念、つまりテンプレート、css、javascriptを分離するのではなく、言語アプリケーションの懸念を分離します等
アプリケーションの言語で懸念事項を分離することに関しては、さまざまなパターンを使用して、コードを単体テストなどが可能なモジュール形式に分離または分離する必要があります。
要約すると、懸念を分離することは、他の場所で述べたように、あなたの役割や視点に依存する可能性があります。