TIL) SOLID(객체 지향 설계)

손시형·2022년 3월 15일
0

서버공부

목록 보기
2/2

드라마를 보면 형사들이 범인에게 무슨 무슨 원칙에 따라 뭐 체포를 하겠다는 이야기를 한다.
그것에 대해 잘 알지 못하지만 프로그래밍도 똑같이 무슨 원칙에 따라 코딩을 해야한다고 이야기를 들었다.

그래서 뭐를 따라 코딩을 해야하는건가? 라는 생각이 들었고 다른 사람에게 물어보니 SOLID원칙에 따라 개발을 하면 좋다고 이야기를 해주었따.

SOLID가 그래서 뭔데..

SOLID를 찾아보니 한가지를 말하는것이 아닌 단어의 첫글자를 따서 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙을 기술한것이다.

이 원칙은 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 만들고자 할때 사용한다고 한다.

우리의 지식사전 구글선생님께 질문 드리니 SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드를 읽기 쉽고 확장하기 쉽게 될때까지 소프트웨어 소스 코드를 리펙토링하여 코드 냄새를 제거한다고한다.

..? 코드 냄새는 또 뭐여
진짜 어이가 없다 코드에서 뭔 냄새가 난다는지 하지만 궁금하니 찾아본다
코드냄새란 컴퓨터 프로그래밍 코드에서 심오한 문제를 일으킬 가능성이 있는 소스 코드의 특징을 이야기할때 사용한단다.

흠... 솔직히 사용할지는 모르겠지만 무튼 오늘도 하나 배웠다... "코드냄새"

본론으로 돌아가서 SOLID 뭐 이쯤오면 대강 언제 쓰는지 느낌이이온다.
이 원칙은 소스코드들을 읽기 쉽고 유지보수 및 확장이 쉬운 시스템을 만들때 사용한다.

이러한 SOLID 원칙들은 애자일 소프트웨어 개발과 적응적 소프트웨어 개발 전략의 일부라고 한다.

진짜 이럴때 화난다. 나는 SOLID 원칙을 알고싶은건데 애자일 소프트웨어 개발이 뭔지 소프트웨어공학이 뭔지를 모른다. 여기서 내 지식의 밑천이 들어났다.

이번에도 어김없이 모르는 부분부터 알아보도록하자

애자일 소프트웨어 개발 이건 진짜 많이 들었다.
해당 단어는 클린코드와 때놓을수 없는 존재이기에 많이 들었다...

그래서 그게 뭐지?
애자일 소프트웨어 개발은 프로젝트의 생명주기동안 반복적인 개발을 촉진하는것이다.
개념적으로는 아무런 계획이없는 개발 방법과 게획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자하는 방법론.

그러니까 요약하자면 프로젝트 기간동안 반복적으로 개발을 하는데, 무계획 또는 뱃사공이 많을때 적절한 타협점을 찾을때 사용한다는것이다.
이 부분에 대해서는 나중에 따로 공부를 더 해보도록 해야겠다.

그렇다면 소프트웨어공학은 뭐지?

소프트웨어공학은 4학년 전공으로도 개설된 과목이라서 눈에 익은 단어이다
대강 찾아보니 소프트웨어의 개발 운용 유지보수 등 생명주기 전반을 체계적이고 서술적이며 정량적으로 다루는 학문이고 품질 비용 유지 보수성 빌드 속도가 개선된 소프트웨어를 창조하는데 초점을 맞춘것이다.

그렇구나.. 코드의 생명주기를 다루는 학문이러군... 이건 나중에 학교에서 듣도록 하겠다 ..^^

진짜 멀리왔다. 그래서 SOLID의 각 단어가 이루는것이 무엇인지 차차 알아보도록하자.

S ➡ 단일 책임원칙(한 클래스는 하나의 책임만 가져야한다.)
모든 클래스는 하나의 책임만 가지며 클래스는 그 책임을 완전히 캡슐화 해야한다.
여기서 캡슐화가 무엇인지 모르는사람 (나)를 위해 찾아보도록하자.

캡슐화란?
1. 객체의 속성과 행위를 하나로 묶고,
2. 실제 구현 내용 일부를 내부에 감추어 은닉하는것.

O ➡ 개방-폐쇄원칙(소프트웨어 요소는 확장에는 열려있으나 변경에는 닫혀있어야한다.)
솔직히 처음에 보고 '뭔소리야'를 말했다.

----------------지속적으로 수정중------------------------

profile
개발새발

0개의 댓글