배경과거 객체지향 강의에서 추상화, 카테고라이즈에 대해 배웠다. 그런데 나는 이런 것들을 실제로 사용하고 있는걸까? 하는 의문점들이 조금씩 들던와중에 실무에 적용할일이 생겼다. 배경 설명- Foo라는 enum이 존재한다.- enum이 자주 추가되지는 않지만 계속해서 추가되는건 확실하다.- 프론트엔드, 백엔드 모두에서 전역적으로 사용된다.- 경우에 따라 특정 enum 값만 허용되어야 한다.- input이 전체 enum인데 outpt은 특정 enum으로 필터링해야한다.- enum에 매핑되는 value가 존재하는 경우가 있다.- enum이 추가될 때마다 전체 시스템을 점검해야하므로, 많은 시간이 소요된다. 고민나는 Foo enum을 추가해야하는 요구사항을 받았다. 또한 기존과는 약간 다른 타입의 enum이였다..

배경 개발을 하다보면 추상화라는 용어를 굉장히 많이 보게 된다. 그리고 개인적으로도 추상화를 하기 위한 노력들을 많이 해왔다. 모호하게 잡혀있던 개념들을 정리해야겠다는 생각이 들어서 이 글을 쓰게 되었다. 이 글은 사전적 정의부터 추상화를 해야하는 이유, 코드에 적용하는 방법, 웹 프론트엔드에 적용하는 방법까지를 다루는 글이다.( + 개인적인 잡담) 추상화란 추상화의 사전적 정의 - 미술에서 추상화(抽象畫)는 대상의 구체적인 형상을 나타낸 것이 아니라 점, 선, 면, 색과 같은 순수한 조형 요소로 표현한 미술의 한가지 흐름이다. - 컴퓨터 과학에서 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 현실 세계의 추상화 사전적 정의로..