스터디 5

5. 형식 맞추기

코드 형식은 중요하다. 의사소통의 일환이기 때문에 개발자의 일차적인 의무이다. 적절한 행 길이를 유지하라 소스코드가 적어도 JUnit, fitness 와 같은 파일을 작성할 수 있다. 신문 기사처럼 작성하라 이름은 간단하면서도 설명이 가능하게 짓는다. 즉 읽기쉽고 자세하게 작성하여야 한다. 개념은 빈 행으로 분리하라 import문, 함수 사이 등에 빈행을 넣어야지 시각적으로 보기가 쉽고 가독성이 좋아진다. 세로 밀집도 세로 밀집도는 연관성을 의미한다. 변수같은 경우 밀집하게 적는다. 또한 쓸데없는 주석을 사용하여 밀집도를 떨어트리지말자 수직 거리 서로 밀접한 개념은 세로로 가까이 두어야 한다. 연관성이 깊은 두 개념이 멀리 떨어져 있으면 코드를 읽는 사람이 소스 파일과 클래스를 여기저기 뒤지게 된다. 변..

4. 주석

오래되고 조잡한 주석은 거짓과 잘못된 정보를 퍼뜨린다. 주석은 나쁜 코드를 보완하지 못한다. 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 코드로 의도를 표현하라 코드로 의도를 설명하기 어려운 경우는 있지만 충분히 표현할 수 있다. ex) // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((emplotee.flags & HOURLY_FLAG) && (employee.age > 65) if (employee.isEligibleForFullBenefits()) 좋은 주석 어떤 주석은 필요하거나 유익하다. 하지만 최고의 주석은 주석을 달지 않을 방법을 찾아낸 주석이다. 법적인 주석: 각 소스 파일 첫머리에 주석으로 들어가는 저작권..

3. 함수

작게 만들어라! 최대한 최대한 아주 작게 만들어야 한다. 한 2줄 3줄 4줄?? 정도가 좋다. if문 while문 등에 들어가는 블록은 한 줄이어야 한다. 한 가지만 해라! 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 추상화 수준이 하나인 단계만 순행한다면 그 함수는 한 가지 작업만 하는 것이다. 함수 당 추상화 수준은 하나로! 함수가 확실히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일 해야 한다. 위에서 아래로 코드 읽기: 내려가기 규칙 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. Switch 문 Switch문은 작게 만들기 어렵다.(if/else 도 마찬가지) 다형성을 이용하여 ABSTRACT FACTORY에 꽁꽁 숨겨 다형성 객체..

2. 의미있는 이름

코딩을 하면서 함수, 변수, 패키지 등등 모든 곳에 이름을 직접 붙인다. 이렇듯 이름을 많이 사용하므로 잘 지어야한다. 의도를 분명하게 밝혀라 주석이 필요하지 않을 정도로 변수, 함수, 클래스명을 작성해야한다. ex) int d -> int elapsed time in days 그릇된 정보를 피하라 ex) 개발자에게 List는 특수한 의미이다. 그래서 실제로 List가 아니면 AccountList같은 변수명을 명명하지 않는다. 또한 소문자 o와 l은 조심해서 사용하자. 각각 0과 1로 보일 수 있기 때문에 혼란을 줄 수 있다. 의미 있게 구분하라 이상한 변수 사용하지 않기 ex) a1, a2, a3 ... 불용어 붙이지 않기 ex) the, a, an, ~s, ~es 등등 발음하기 쉬운 이름을 사용하라 ..

소개

클린코드란? 가독성이 좋은 코드 --> 모든 팀원이 이해하기 쉽게 작성된 코드이다. 가독성이 중요한 이유 어떠한 코드를 변경하려고 할 때 코드 해석시간과 코드를 수정하는 비율이 10대 1 이라고 한다. 즉 이해하기 쉬운 가독성이 좋은 코드야말로 오류를 고치는데의 시간과 위험성을 줄일 수 있다. 왼쪽 그래프에서 시간이 지날 수록 생각했던 것보다 비용이 발생하고 오른쪽 그래프에서는 대응속도가 생각했던것보다 느리게 작동한다. 이러한 차이가 나오는 이유는 초기에 클린코드를 사용하기보다는 빠르고 쉬운 코드를 사용하기 때문이다. ex) copy&paste 내 코드로 보는 클린코드가 필요한 코드 이 문제는 백준 2108 문제이다. 이 코드에는 문제점이 있다. 1. 알수 없는 변수들 ex) n, data ... 2. ..