간단한 방법으로 관심사를 분리하다
11094 단어 soccomputersciencebeginners
너의 2000여 줄 프로그램은 모두 한 파일에 쓰여 있다.
하지만 너는 이미 알고 있거나, 아니면 나는 네가 알고 싶다.
나는 네가 그것을 더욱 치밀하게 하려고 시도했다는 것을 알고 있지만, 일은 무의미하다.
이것이 바로 시간과 공간을 초월하는 원칙이다. 이것은 우리가 생활의 각 방면에 도움을 주고, 이를 관심점 분리나 SoC라고 부른다.
나는 이것이 매우 무섭게 들리는 것을 알지만, 걱정하지 마라. t아저씨가 여기 있다. 나는 가능한 한 간단하게 너를 기쁘게 할 것이다.
그래서 오늘 우리는 다음과 같은 몇 가지를 되돌아볼 것이다.
관심사 분리란 무엇입니까?
지금, 매 편의 블로그에 너는 한마디를 더해야 한다. 이것은 내가 표절한 것이다wikipedia
In computer science, separation of concerns is a design principle for separating a computer program into distinct sections such that each section addresses a separate concern.
자, 이제 수속이 끝났으니 설명해 드릴게요.
관심점 분리는 보편적인 원칙이다. 거의 모든 사람들이 이렇게 한다. 나는 소프트웨어 개발에 대해 이야기하고 있을 뿐만 아니라, 많은 다른 분야에도 적용된다.상상해 봅시다. 우리는 T삼촌 진료소라는 병원이 있습니다. 우리 병원에는 간호사, 의사, 의료 보조원, 기술자, 문원, 뷔페 식당 등 다양한 역할의 직원들이 있습니다.
이 사람들이 어떻게 일을 완성했는지 아는 사람이 있습니까?아니, 감당하기 힘들기 때문이다.그들은 서로 다른 직책을 서로 다른 역할로 나누어야 하는데 이런 역할 간의 접점은 매우 구체적이다.
너는 코드와 더욱 관련된 예를 듣고 싶을 수도 있으니, 여기에 모두가 참고할 수 있는 예가 하나 있다.
간단한 웹 페이지의 예:
<!DOCTYPE html>
<html>
<head>
<style>
body {background-color: powderblue;}
h1 {color: blue;}
p {color: red;}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
<script>
console.log("hello world")
</script>
</html>
이것은 완벽한 작업 페이지이지만 문제는 우리가 웹 페이지에 더 많은 내용을 추가하고 싶다면 일이 엉망이 될 것이다. 주로 우리의 구조, 풍격과 논리층이 밀접하게 연결되어 있기 때문이다.더 나은 방법은 다음과 같습니다.<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
<script src="logic.js"></script>
</html>
// logic.js
console.log("hello world")
/* styles.css */
body {background-color: powderblue;}
h1 {color: blue;}
p {color: red;}
이제 우리의 코드는 더욱 깨끗해졌다. 왜냐하면 우리는 그것들을 세 개의 다른 파일로 나누어 서로 다른 층을 처리하기 때문이다.나는 이것이 매우 간단한 예라는 것을 알고 있지만, 그것은 더욱 큰 범위 내에서 응용할 수 있으며, 이것은 문장 하반부의 예 부분에 나타날 것이다.내집과 결합
우리는 왜 이것에 대해 이야기해야 합니까?
관심사를 분리하는 것은 두 가지 과정과 관련이 있기 때문에 결합을 줄이고 내집합을 증가시킨다.
무엇이 응집력입니까?
응집력은 한 조의 사물 간의 관련 정도를 평가하는 지표이다. 예를 들어 주방에서 칼을 칼걸이 위에 놓고 숟가락과 숟가락, 포크와 포크를 놓는다. 알겠다.컴퓨터 과학에서 하나의 방법과 데이터 간의 관계가 얼마나 긴밀한가.
예를 들어 다음과 같은 두 가지 기능을 사용할 수 있습니다.
function drawCirle(){
// draw a cirlce code
}
function drawRectangle(){
// draw a rectangle code
}
이 두 기능은 본질적으로 매우 밀접하거나 비슷하여 그림을 담당하는 같은 모듈/클래스에 위치할 수 있으며 공평하게 말하면 그것들을 함께 놓으면 매우 자연스럽게 느껴진다.그것은 이렇게 보인다.class Draw {
public function drawCircle(){
// draw a circle
}
public function drawRectangle(){
// draw a rectangle
}
}
결합이란 무엇입니까?
결합은 기본적으로 두 개 이상의 클래스, 모듈, 구성 요소 간의 의존적인 도량이다.긴밀한 결합이 좋지 않고 느슨한 결합이 좋다.
고도의 내중성과 낮은 결합성을 가진 코드를 항상 작성해 보십시오.
이런 방법에는 많은 장점이 있다.
왜 얘가 이렇게 일을 잘해?
간단한 대답: 정보가 가지런히 분리될 때 우리의 뇌는 정보를 처리하기 쉽다.
상세 답변: 코드를 쉽게 읽고 유지 관리하고 확장할 수 있도록 구성하는 방법은 다음과 같습니다. 그러나 이는 고객뿐만 아니라 동료에게도 유용합니다.
예.
만약 내가 이 원칙을 사용하는 모든 다른 유형의 영역을 열거해야 한다면, 이것은 가장 흔히 볼 수 있는 영역이며, 나는 이 글을 영원히 완성하지 못할 것이다.
인터넷 프로토콜 스택
인터넷을 디자인할 때 관심사 분리를 사용했다.internet protocol suite에서 관심사를 여러 차원으로 나누는 데 큰 노력을 기울였다.이로써 프로토콜 디자이너들은 단일 층의 관심사에 집중할 수 있다.예를 들어 응용층 프로토콜SMTP은 전송 서비스(일반적으로 TCP)를 통해 전자 우편 세션을 진행하는 것을 포함한다.그러나 SMTP를 사용할 때 TCP가 어떻게 작동하는지에는 관심이 없습니다.이와 유사하게 TCP는 데이터 패키지의 루트가 어떻게 발생하는지에 관심이 없고 이러한 루트는 인터넷 층에서 처리된다.
모형, 뷰, 컨트롤러(MVC)
MVC는 응용 프로그램을 세 가지 구성 요소로 나누는 아키텍처 모델입니다.
MVC는 라벨, 스프링 등 웹 개발 프레임워크에서 가장 유행하는 아키텍처다.
마이크로 서비스
모든 사람과 그들의 어머니는 마이크로 서비스에 대해 이야기하고 있다.기본적으로 그것은 다른 소형 독립 프로젝트로 구성된 프로젝트이다.본질적으로 이것은 관심점 분리의 형식이다.
결론
나는 이 문장이 끝날 때, 네가 관심사를 분리하는 의미를 더욱 잘 이해할 수 있기를 바란다.이 원칙은 코드뿐만 아니라 현실 생활, 예를 들어 목표 설정 등에도 적용된다는 것을 잊지 마라.이러한 지식을 습득하면, 당신은 마침내 당신의 베테랑 동료들이 자랑스러워할 코드를 작성할 수 있습니다.
T 아저씨, 나가세요.
겸사겸사 한마디 하자면, 나는 블로그를 쓰는 데 아직 풋내기라는 비판에 정말 감사한다.
도구책
Reference
이 문제에 관하여(간단한 방법으로 관심사를 분리하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tamerlang/separation-of-concerns-the-simple-way-4jp2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)