-
클린코드 함수 - 추상화개발/프로그래밍 2020. 9. 27. 19:46
클린코드에서는 함수를 짤때 짧게 함수를 만드는것을 권장한다.
함수가 길어질수록 그 함수가 어떤 일을하는지 명확하지 않아지며 가독성이 떨어지게 될것이다.
함수를 짧게 구현하기 위해서는 함수가 하는일이 한가지여야 한다.
하나의 함수가 여러가지의 작업을 하게되면 그만큼 함수가 길어질것이다.
그럼 어떻게 함수를 구현하면 될까? 예시를 보자
String renderPageWithSetupAndTeardowns(PageData pageData, bool isSuite){ if(isTestPage(pageData)){ //테스트 페이지인지 확인 includeSetupAndTeardownPages(pageData,isSuite) //셋업페이지와 분해페이지를 삽입 } return pageData.getHtml(); //리턴 }
위의 코드를 보면 if 문안에 들어간 구문을 1줄로 구현했다.
자세히 보면 다른 함수를 호출하기 때문에 1줄로 구현이 가능함을 볼수있다.
이 한줄에 들어가는 함수 이름을 적절히 짓는다면 이함수를 읽는데 시간이 오래걸리지 않을것이다.
따라서 함수 이름을 잘 지어야함을 확인할수있다.
if 문안의 구문을 한번더 들여쓸만큼 이 함수가 커져서는 안된다.
클린코드에서의 함수는 단 한 가지를 해야한다고 강조한다. 그 이상을 하게되면 함수가 커지기 때문이다.
하지만 어떻게보면 주석처리한 부분을 보면 알수있듯이 이함수는 세가지 작업을한다.
여기서 말하는 단 한가지란 추상화 수준이 하나라는 말이다.
나로써는 추상화 수준이라는것이 이해하기 힘든 부분이었는데
여러 다른 블로그들을 보면서 참조하면서 약간은 이해가간것같다.
출처 : https://medium.com/@oowgnoj/clean-code%EB%A5%BC-%EC%9D%BD%EA%B3%A0-2-893d73b86b37 추상화 에대한 국어적 해석이다.
isTestPage() 함수 안에는
테스트 페이지인지 아니지 구별하기 위해 if 문이들어갈수있고 조건에대한 구문 등등이 들어갈수 있다.
이를 추상화 수준이 높다고 표현하며 pageData.include('test') 는 추상화 수준이 낮은 코드라고 표현한다.
위 코드에서 이런식으로 낮은 추상화 수준과 높은 추상화 수준을 섞는다면 이런식으로 구현했을것이다.
String renderPageWithSetupAndTeardowns(PageData pageData, bool isSuite){ bool isTestPage = pageData.include('test'); //낮은추상화 if(isTestPage){ includeSetupAndTeardownPages(pageData,isSuite) //높은추상화 } return pageData.getHtml(); //높은 추상화 }
이런 코드는 잘못됬다고 표현 하는것이다.
높은추상화는 높은추상화끼리 낮은 추상화는 낮은 추상화끼리 구현하는게 좋다.
'개발 > 프로그래밍' 카테고리의 다른 글
클린코드 - 오류,예외처리 (0) 2020.10.07 클린코드 - 객체와 자료구조 (0) 2020.10.06 vscode 비주얼 스튜디오 코드 형식맞추기 - 가로줄크기, 글자크기, 들여쓰기 설정 (0) 2020.10.04 클린코드 함수 - switch 문 (0) 2020.09.27 클린코드 함수 - 적절한 인수값(Parameter) (0) 2020.09.27