関心事の分離とマーフィーの法則

Mary-Kate Olsen
リリース: 2024-10-07 06:17:02
オリジナル
460 人が閲覧しました

Separation of concern & Murphy

うまくいかない可能性のあるものは必ずうまくいかないというのがマーフィーの法則です。これは、関心の分離として知られるソフトウェア エンジニアリングの原則です。

関心の分離は、アプリケーションをセクションまたはモジュールに分割するために使用されるプログラミングの設計原則です。

SoC は、各セクションが機能または動作の特定の側面を担当することを保証します。これにより、アプリケーションの保守と拡張が容易になります。

この原則により、アプリケーション全体で使用できる再利用可能なコンポーネントを作成できます。

関心の分離におけるマーフィーの法則

複数の側面や機能が混在している場合、またはコード内の 1 つのファイル内にある場合、最終的に何かが壊れます。

高速アプリケーションと Web サーバーを分離するなど、懸念事項を分離すると、すべてが壊れる可能性が減ります。

Express アプリに問題があったとしても、アプリケーションのロジックには影響しません。アプリケーションの動作や責任を細分化すればするほど、1 つの障害がアプリケーション全体に影響を及ぼす可能性は低くなります。

SoC が適用されていない例:


const express = require('express');
const app = express();

// Application logic (handling routes)
app.get('/hello', (req, res) => {
  res.send('Hello, World!');
});

// Server logic (listening on a port)
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});



ログイン後にコピー

マーフィーの法則の仕組みは次のとおりです

  • サーバー障害が発生した場合 (ポートがすでに使用されている場合)、ルートをテストできず、アプリ全体が正常に動作します。

SoC適用例


//app.js
const express = require('express');
const app = express();

// Application logic (handling routes)
app.get('/hello', (req, res) => {
  res.send('Hello, World!');
});

module.exports = app;


ログイン後にコピー

//server.js
const app = require('./app'); 
// Server logic (listening on a port)
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});


ログイン後にコピー
  • サーバーが起動に失敗した場合でも、アプリケーションのロジックは安全であるため、アプリケーションは引き続き動作します。

  • jest や supertest などのテスト フレームワークを使用すると、サーバーを直接実行しなくてもアプリケーション ロジックをテストできます


const request = require('supertest');  
const app = require('./app');          

// Test case for GET /hello
test('GET /hello should return "Hello, World!"', async () => {
  const response = await request(app).get('/hello');  
  expect(response.text).toBe('Hello, World!');        });



ログイン後にコピー

以上が関心事の分離とマーフィーの法則の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!