추상화(abstraction): 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것 (컴퓨터과학 - 위키백과)
소프트웨어 공학을 공부하다 보면
소프트 웨어 = 프로그램 + 문서
프로그램 = 소스코드와 데이터
이 내용부터 배우고 시작하였다
그리고 나서 OOP에 대해서 배우고 추상화라는 개념도 자세하게 배우는데
추상화가 클린코드에 어떤 부분에서 고려를 중점으로 해야할지 고민을 해본 적이 없었다.
추상화를 한다는것은 즉 핵심적인 내역을 간추려 냈다는 것인데
좋은 코드를 짜기위해서는 남들이 봐서도 그 간추린 내용을 유추할 수 있어야 한다.
아!
추상화를 하는게 중요한것보다
추상화를 잘 하는것이 제일 중요하다는 것을 느꼈다.
그래서 클린코드 입장에서 추상화를 한번 적어보았다.
예시를 두개를 들어보겠다
우선소스 코드의 예시이다.
public void writeFileToLocalPathAndReturnStorageURL() { ... }
public String uploadFile(MultipartFile file) { ... }
둘다 무슨의미로 하겠는지는 알겠으나 위의 메소드의 경우는 너무 자세하게 설명을 하고있다.
실생활로 예시를 들어보면
위의 메소드를 과장하자면
내가 소유한 물건에 나의 소유라고 남들에게 공표를 하기 위해 물로 지우기 힘든 특수한 용액으로 나를 나타내는 나의 부모님이 부여한 글자를 나타내는 행위를 하였다.
그렇다 대충 알아듣겠지만 읽고 뭔소리인지 생각해야한다.
즉, 내물건에 이름쓰기이다.
또 다른 예시를 들어보겠습니다.
책을 읽는 방을
독서방과 읽는방으로 나타낸다면
둘중 어느것이 책을 읽는 방이라고 알수 있을까
설명이 있었다면 둘다 알 수 있겠지만 핵심 내용을 잘 간추린 독서방이 더 추상화를 잘했다고 볼 수 있다.
독서라는 핵심내용을 남겼고 읽음이라는 덜 중요한 내용을 남겼기 때문이다,
덜 중요한 내용을 남겼기 때문에 유추가 완벽하게 되지 않는다.
즉, 추상화를 한다는 것은 유추가 가능해야한 다는 점을 말하고 싶었다.
유추가 된다는 것은 남들이 봐도 코드가 유추가 되어 코드가 잘 읽힌다라는 의미를 가지고 있기 때문이다.
종종 그러다 보니 도메인 지식이 중요해진다.
도메인 지식의 유무로 유추가 가능해지는 영역이 달라지기 때문이다.
즉, 클린 코드에서 이름을 잘 지어야 하는 개념도 포함이고
그 과정에서 추상화를 잘 해야한다.
'3.4. 프로그래밍 개념 및 도구 > 클린코드 & 좋은코드습관' 카테고리의 다른 글
클린코드란 뭘까 (0) | 2024.12.24 |
---|---|
테스트 코드 종류 (0) | 2024.11.17 |
댓글