CLEAN CODE
주석..주석에 대한 개인적인 고찰
항상, 주석을 달면 다음에 읽을 사람을 위해 자세히 달아 주면, ( 아! 다음 사람이 이 주석을 보면서 코드를 더 잘 이해하실 수 있겠지?)라고 생각하며 기분 좋은 마음으로 달아주었다.. 하지만 직접 실무를 다루게 되고, 다른 사람이 만들어 놓은 코드를 읽을 때면 주석이 무조건 좋은 것이 아니라는 것을 깨달을 수 있었다... 클린코드에서는 아래와 같이 좋은 주석과 나쁜 주석을 분류해놓았다. 😆 좋은 주석 법적인 주석 의도를 설명하는 주석 의미를 명료하게 밝히는 주석 결과를 경고하는 주석 TODO 주석 중요성을 강조하는 주석 😱 나쁜 주석 주절거리는 주석 같은 이야기를 중복하는 주석 오해할 여지가 있는 주석 의무적으로 다는 주석 있으나 마나 한 주석 무서운 잡음 함수나 변수로 표현할 수 있다면 주석 X 닫..
CLEAN 함수 (3)
1. 반복하지 말자 하나의 함수가 다른 코드와 섞이면서 모양새가 달라지는 중복이 발생할 수 있다. 이러한 중복은 깨끗한 코드가 될 수 없게 만든다.. 중복은 소프트웨어에서 모든 악의 근원이다. 중복은 데이터베이스에서는 정규 형식을 통해 해결하고, 객체지향에서는 부모 클래스로 몰아넣는 방법으로 해결하고, 또한 구조적 프로그래밍, AOP, COP 전략들도 있다. 2. 다익스트라의 구조적 프로그래밍 구조적 프로그래밍이란 모든 함수와 함수 내 모든 블록에 입구와 출구가 하나만 존재해야 한다는 것이다. 이 말은 즉슨, return문은 하나 뿐이고, 루프 안에는 break나 continue, goto 문이 존재하면 안 된다. 참고 : 클린 코드 ( 로버트 C. 마틴 )
CLEAN 함수 (2)
1. 서술적인 이름을 사용하자 함수명을 좋게 작성할수록 코드의 가치는 더욱 높아진다. 왜냐하면 코드를 읽으면서 코드의 기능을 짐작을 할 수 있다면 깨끗한 코드이기 때문이다. 이름은 길어도 괜찮다. ( 길고 서술적인 이름이 짧고 어려운 이름보다 좋다. ) 이름을 정하는데 시간을 들여도 괜찮다. ( 그만큼 보답이 따를 것이다. ) 이름을 좋게 만들수록 개발자가 설계하기도 쉽고 코드를 개선하기도 쉬워진다. 이름을 붙일 때는 일관성이 있게 하자. (좋은 예시) includeSetupAndTeardownPages, includeSetupPages, includeSuiteSetupPage, includeSetupPage 2. 함수 인수의 개수는 중요하다 함수에서 이상적인 인수 개수는 0개이고, 그다음 1개, 2개,..
스위치 문 리팩토링( Refactoring Switch statement )
아래는 많은 함수들에 쉽게 사용되고 있는 Switch structure (스위치 문)이다. switch(typeCode) case type1: return data specific to type1 case type2: return data specific to type2 case type3: return data specific to type3 일상 코드에서 흔히 볼 수 있는데, 무작정 스위치문을 사용하는 것은 확장하기 어려워지고, Open-Closed Principle 규칙을 해한다. Open-Closed Principle? Code should be open to extension, but closed to modification . 코드는 확장에는 열려있어야 하지만, 수정에는 닫혀있어야 한다. 자!..
CLEAN 함수 (1)
1. 작게 만들자 - 최대한 짧은 함수를 만들자 짧은 함수가 명백하고, 하나의 이야기를 표현할 수 있으면 최고의 함수라고 말할 수 있다. - 블록과 들여 쓰기 if/else문 while문 등에 들어가는 블록은 한 줄이 적당하다. 또한 중첩 구조가 1단이나 2단을 넘지 말자 2. 한 가지만 하도록 하자 - 한 가지 작업을 하는 함수를 만들자 ''함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만을 해야 한다."라는 유명한 충고가 있는데, 이때 한 가지라는 의미는 추상화 수준을 말한다. 추상화 수준이란? 어떤 함수를 구성할 때 큰 개념에서 파생된 개념들로 나아가면서 단계적으로 나눠졌을 때 같은 단계를 같은 추상화라고 한다. 만약 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수..
CLEAN 코드 네이밍 (2)
1. 인코딩을 피하라 (1) 헝가리식 표기법 변수명에 유형이나 범위 그리고 정보까지 인코딩에 넣으면 그만큼 이름을 해독하기 어렵다. 또한 인코딩한 이름은 발음하기 어렵고 오타가 생기기도 쉽다. 따라서 헝가리식 표기법과 기타 인코딩 방식을 지양하자. 헝가리식 표기법이란? 변수 앞에 데이터 형식(약자)을 붙여서 이름을 짓는 방법 (2) 멤버 변수 접두어 멤버 변수에는 m_이라는 접두어를 붙였었는데, 이제는 붙일 필요가 없다. ( IDE의 발전 ) public class Part{ private String m_dsc; void setName(String name){ m_dsc = name; } } // m_ 을 붙인다고? 너무 옛날 방식인데? public class Part{ String descriptio..