클린코드
주석..주석에 대한 개인적인 고찰
항상, 주석을 달면 다음에 읽을 사람을 위해 자세히 달아 주면, ( 아! 다음 사람이 이 주석을 보면서 코드를 더 잘 이해하실 수 있겠지?)라고 생각하며 기분 좋은 마음으로 달아주었다.. 하지만 직접 실무를 다루게 되고, 다른 사람이 만들어 놓은 코드를 읽을 때면 주석이 무조건 좋은 것이 아니라는 것을 깨달을 수 있었다... 클린코드에서는 아래와 같이 좋은 주석과 나쁜 주석을 분류해놓았다. 😆 좋은 주석 법적인 주석 의도를 설명하는 주석 의미를 명료하게 밝히는 주석 결과를 경고하는 주석 TODO 주석 중요성을 강조하는 주석 😱 나쁜 주석 주절거리는 주석 같은 이야기를 중복하는 주석 오해할 여지가 있는 주석 의무적으로 다는 주석 있으나 마나 한 주석 무서운 잡음 함수나 변수로 표현할 수 있다면 주석 X 닫..
CLEAN 함수 (3)
1. 반복하지 말자 하나의 함수가 다른 코드와 섞이면서 모양새가 달라지는 중복이 발생할 수 있다. 이러한 중복은 깨끗한 코드가 될 수 없게 만든다.. 중복은 소프트웨어에서 모든 악의 근원이다. 중복은 데이터베이스에서는 정규 형식을 통해 해결하고, 객체지향에서는 부모 클래스로 몰아넣는 방법으로 해결하고, 또한 구조적 프로그래밍, AOP, COP 전략들도 있다. 2. 다익스트라의 구조적 프로그래밍 구조적 프로그래밍이란 모든 함수와 함수 내 모든 블록에 입구와 출구가 하나만 존재해야 한다는 것이다. 이 말은 즉슨, return문은 하나 뿐이고, 루프 안에는 break나 continue, goto 문이 존재하면 안 된다. 참고 : 클린 코드 ( 로버트 C. 마틴 )
CLEAN 함수 (2)
1. 서술적인 이름을 사용하자 함수명을 좋게 작성할수록 코드의 가치는 더욱 높아진다. 왜냐하면 코드를 읽으면서 코드의 기능을 짐작을 할 수 있다면 깨끗한 코드이기 때문이다. 이름은 길어도 괜찮다. ( 길고 서술적인 이름이 짧고 어려운 이름보다 좋다. ) 이름을 정하는데 시간을 들여도 괜찮다. ( 그만큼 보답이 따를 것이다. ) 이름을 좋게 만들수록 개발자가 설계하기도 쉽고 코드를 개선하기도 쉬워진다. 이름을 붙일 때는 일관성이 있게 하자. (좋은 예시) includeSetupAndTeardownPages, includeSetupPages, includeSuiteSetupPage, includeSetupPage 2. 함수 인수의 개수는 중요하다 함수에서 이상적인 인수 개수는 0개이고, 그다음 1개, 2개,..
CLEAN 함수 (1)
1. 작게 만들자 - 최대한 짧은 함수를 만들자 짧은 함수가 명백하고, 하나의 이야기를 표현할 수 있으면 최고의 함수라고 말할 수 있다. - 블록과 들여 쓰기 if/else문 while문 등에 들어가는 블록은 한 줄이 적당하다. 또한 중첩 구조가 1단이나 2단을 넘지 말자 2. 한 가지만 하도록 하자 - 한 가지 작업을 하는 함수를 만들자 ''함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야 한다."라는 유명한 충고가 있는데, 이때 한 가지라는 의미는 추상화 수준을 말한다. 추상화 수준이란? 어떤 함수를 구성할 때 큰 개념에서 파생된 개념들로 나아가면서 단계적으로 나눠졌을 때 같은 단계를 같은 추상화라고 한다. 만약 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수..
CLEAN 코드 네이밍 ( 1 )
1. 의도를 분명하게 밝히자 좋은 이름을 짓는 시간보다 좋은 이름으로 절약하는 시간이 훨씬 더 많다. int d // 시간 int elaspedTimeInDays; int daysSinceCreation; int daysSinceModification; int fileAgeInDays; 이름 d보다는 아래 elaspedTimeInDays 처럼 의도가 드러날 수 있도록 이름을 짓는 게 좋다. 또한 알고리즘을 만들때도, public List getThem(){ List list1 = new ArrayList(); for(int[] x : theList) if(x[0] == 4) list1.add(x); return list1; } 누구나 봤을 때 아무런 의도를 알 수 없게 만드는 것이 아닌... public..