-
9/2 TIL | 우리가 관심사의 분리를 잘해야 하는 이유.📝 기록/매일의 기록 2022. 9. 2. 17:57
오늘은 3주차의 마지막 날인 금요일! 매번 금요일만 되면 한 주가 이렇게 빨리 지나가는구나 싶다. 옆자리 짝꿍이 방금 "시간이 느린데 빠르다"라고 했는데, 진짜 그게 딱 맞는 말이다. 과정은 느리게 흘러가지만, 막상 지나고 나면 엄청 빨리 지나간 느낌.
이번 주는 객체 지향 프로그래밍을 처음 배웠던 한 주였기에 코딩 인터뷰에서는 그에 관련된 질문을 많이 받았다. 오늘 TIL은 그중 기억에 두고두고 남기고 싶은 "우리가 관심사의 분리를 잘해야 하는 이유"에 대해서 한번 적어보려고 한다.
우선 관심사의 분리에 대해서 말해보자면, 특정한 관심사에 따라 기능을 나누고 각 기능을 독립적으로 개발한 뒤 이를 조합하는 방식이다. 즉, 각 부문은 개개의 관심사를 해결하는 구조를 말하는데 여기서 관심사란 컴퓨터 프로그램 코드에 영향을 미치는 정보의 집합을 말한다. 이때 추상화를 잘하면 잘할수록 관심사의 분리가 잘 이루어진다.
객체지향 언어인 자바에서의 추상화는 복잡한 문제를 다루기 위해서 불필요한 부분들을 숨기고 중요한 부분만 남겨놓는 것을 말한다. 객체들 간에 공통되는 특성들만 추출한 것인데, 왜 이렇게까지 하는 걸까? 그 이유는 바로 컴퓨터가 복잡하기 때문이다. 추상화를 통해 복잡한 내부는 숨기고 노출되는 외부는 단순하게 만드는 것이다. 예를 들어 리모컨을 생각해보자. 내가 리모컨의 볼륨 버튼을 눌러 TV의 볼륨을 키웠다 줄였다 할 때, 볼륨 UP/DOWN 버튼만 누르면 되지 리모컨 내부의 동작 원리와 구조까지 알 필요는 없다. 추상화란 바로 그런 것이다. 이때 리모컨은 인터페이스에 해당하는데, 인터페이스는 두 사물이 마주치는 경계 지점에서 서로 상호작용할 수 있게 이어주는 매개체이다.
그렇게 우리가 추상화를 잘하면 잘할수록 관심사의 분리도 잘 이루어지는데, 관심사를 분리하여 코드를 작성하면 독립된 특정 기능에만 온전히 집중할 수 있기 때문에 코드를 파악하는데 드는 인지비용이 확 줄어들고, 또 특정 기능을 변경하거나 추가하게 된다 하더라도 그 부분만 교체하면 되기 때문에 훨씬 간단하게 문제를 해결할 수 있게 된다.
프로덕트를 시장 상황에 맞춰 발 빠르게 기능을 수정하거나 새롭게 피봇팅해야 하는 상황에서 관심사의 분리가 더욱 빛을 발할 수 있다. 개발자로서 관심사의 분리를 잘한다면 단순히 내 코드를 유지보수하기 좋아지는 것에서 그치는 게 아니라 기업의 영업 이익에도 영향을 미칠 수 있는 중요한 고급인력이 될 수 있는 것이다. 또한 더 나은 코드를 만들기 위한 고민하는 과정을 통해서 성장하는 개발자가 될 뿐만 아니라 인정받는 개발자도 될 수 있는 것이다. 오늘 배운 내용들을 잘 정리하고 소화하여 좋은 개발자가 될 수 있도록 노력하자.
'📝 기록 > 매일의 기록' 카테고리의 다른 글
9/13 TIL | 람다식에서는 왜 final, effectively final 변수만 사용해야 하는가?🧐 (0) 2022.09.13 9/12 TIL | 연휴 끝. 동등성 이해하기! (0) 2022.09.12 9/1 TIL | 압박감을 내려놓는 법. (0) 2022.09.01 8/31 TIL | 우당탕탕 객체지향! (0) 2022.08.31 8/30 TIL | 모르겠을 땐 그림을 그려보자! 그리고 내 페이스를 지킬 것. (0) 2022.08.30