> 웹 프론트엔드 > JS 튜토리얼 > 관심의 분리와 머피의 법칙

관심의 분리와 머피의 법칙

Mary-Kate Olsen
풀어 주다: 2024-10-07 06:17:02
원래의
531명이 탐색했습니다.

Separation of concern & Murphy

무엇이든 잘못될 수 있는 것은 잘못될 것입니다 이것이 바로 머피의 법칙입니다. 이는 관심 분리로 알려진 소프트웨어 엔지니어링의 원칙입니다.

관심의 분리는 애플리케이션을 섹션이나 모듈로 나누는 데 사용되는 프로그래밍의 설계 원칙입니다.

SoC는 각 섹션이 기능이나 동작의 특정 측면을 담당하도록 보장합니다. 이를 통해 애플리케이션의 유지 관리 및 확장이 용이해집니다.

이 원칙을 통해 전체 애플리케이션에서 사용할 수 있는 재사용 가능한 구성 요소를 만들 수 있습니다.

우려분리의 머피의 법칙

여러 측면이나 기능이 혼합되어 있거나 코드의 한 파일에 있으면 결국 문제가 발생합니다.

예를 들어 Express 애플리케이션과 웹 서버를 분리하여 우려 사항을 분리하면 모든 것이 중단될 가능성이 줄어듭니다.

Express 앱에 문제가 있어도 애플리케이션 논리에는 영향을 미치지 않습니다. 애플리케이션의 동작이나 책임을 더 많이 분류할수록 한 번의 실패가 전체 애플리케이션에 영향을 미칠 가능성은 더 낮아집니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿