코드정리
-
8. 한번에 하나씩Technique/Readable Code 2015. 12. 11. 11:55
한 번에 여러가지 일을 수행하는 코드는 읽기 어렵다. 코드 블록 하나에 새로운 객체를 초기화하고, 데이터를 청소하고, 입력을 분석하고 비지니스 논리를 적용하는 일을 한꺼번에 수행하는 경우도 있다. 이런일이 모두 한자리에 모여 있다면 각각의 작업이 별도로 시작되었다가 완료되는 경우보다 더욱더 이해하기 어렵다.다시 말해서 한 번에 하나의 작업만 수행하게 코드를 구성 해야한다. ■ 함수는 오직 한 가지 작업만 수행해야한다.이러한 말은 항상 함수 수준에 머물러야 하는 것은 아니다. 물론 커다란 함수를 여러 작은 함수로 나누는 것은 좋다.커다란 함수안에 있는 코드를 재조직하여 그 안에 여러 개의 독자적인 논리적 영역이 있는 것 처럼 만들 수 있다. - 코드가 수행하는 모든 작업을 나열한다. - 이러한 작업을 분리..
-
7.상관없는 하위 문제 추출Technique/Readable Code 2015. 12. 11. 11:06
우리는 문제를 해결 하기 위하여 커다란 문제를 작은 문제들로 쪼갠 다음 각각의 문제에 대한 해결책을 구하고 다시 하나의 해결책으로 맞추는 작업을 한다.이러한 원리를 코드에 적용하면 코드는 더 튿튿해지며 가독성도 좋아진다. 큰 흐름에서 작은 하위 문제를 적극적으로 바견해서 추출하라!■ 주어진 함수나 코드 블록을 보고 스스로에게 질문하라 "상위 수준에서 본 이 코드의 목적은 무엇인가?"■ 코드의 모든 줄에 질문을 던져라 "이 코드는 직접적으로 목적을 위해서 존재하는가? 혹은 목적을 위해서 필요하긴 하지만 목적 자체와 직접적으로 상관없는 하위 문제를 해결 하는가?"■ 만약 상당히 원래의 목적과 직접적으로 관련되지 않은 하위문제를 해결하는 코드 분량이 많으면, 이를 추출해서 별도의 함수로 만든다. sql 데이터..
-
6. 변수와 가독성Technique/Readable Code 2015. 12. 10. 22:24
변수를 엉터리로 사용하면 코드를 이해하기 어려워 지는 커다란 이유는 아래와 같다 ■ 변수의 수가 많을수록 기억하고 다루기 더 어려워진다.■ 변수의 범위가 넒어질수록 기억하고 다루는 시간이 더 길어진다■ 변수의 값이 자주 바뀔수록 현재값을 기억하고 다루기가 더 어려워진다. 이러한 문제를 해결하기 위하여... 변수 제거하기가독성에 도움이 되지 않는 변수를 제거하는 방법들■ 불필요한 임시변수 12now = datetime.datetime.now();root_message.last_view_time = now;cs위 코드에서 now변수는 꼭 필요한가? 그렇지 않다. 이유는- 복잡한 표현을 잘게 나누는 것이 아니다- 명확성에 도움이 되지 않는다 datetime.datetime.now는 그 자체로도 명확하다- 한 ..
-
5. 거대판 표현을 잘게 쪼개기Technique/Readable Code 2015. 12. 10. 12:39
코드의 표현이 커지면 커질수록 이해하기 더 어렵다 ■ 거대한 표현을 더 소화하기 쉬운 여러 조각으로 나눈다 설명변수- 작은 하위 포현을 담을 추가변수를 만드는것 - 추가변수 = 설명변수12345678if(list.split(':')[0].strip() == "root"): .... username = line.split(':')[0].stript()if(username == "root"):... Colored by Color Scriptercs 위 코드와 같이 한번에 모든걸 다 하려고 하면 읽기 불편함이 많다.가장 기본적인 방법중 하나이다 요약변수- 의미를 쉽게 파악할수 있어 별도의 설명을 요구하지 않는 표현이라고 해도 새로운 변수로 담아두는 방법은 유용할 수 있다. - 코다란 코드의 덩어리를 짧은 이름..
-
4. 흐름제어Technique/Readable Code 2015. 12. 10. 10:34
조건, 루프, 흐름을 통제하는 선언문이 코드에 없으면 코드를 매우 읽기 편할 것 이다.이와 같은 분기문, 점프문은 어려운 대상이며, 코드를 복잡하게 만드는 원인이다. ■ 흐름을 제어하는 조건과 루프 그리고 여타 요소를 최대한 자연스럽게 만들도록 노력하라. 코드를 읽다가 다시 되돌아가서 코드를 읽지 않아돋 되게끔 만들어야 한다. ■ 조건문에서의 인수의 순서 a > b b > a 에서 값을 어디에 두는가 왼쪽 : 값이 더 유동적인 질문을 받는 표현 오른 쪽 : 더 고정적인 값으로 비교 대상으로 사용 되는 표현 ex ) length >= 10 10
-
3. 주석Technique/Readable Code 2015. 12. 9. 14:28
주석을 다는 목적은 코드를 작성하는 사람이 알고 있는 정보를 코드를 읽는 사람에게 전달하는 것 이다.코드에서 명확하게 드러나지 않는 내용이 무엇인지 파악하고 주석으로 처리하는 것 ■ 설명하지 말아야 할 것 - 코드 자체에서 재빨리 도출될 수 있는 사실 - 나쁜 함수명과 같이 나쁘게 작성된 코드를 보정하려고 애쓰는 주석 그렇게 할 시간에 코드를 수정해라 ■ 코드에 기록 해야하는 것 - 코드가 특정한 방식으로 작성된 이유를 설명해주는 내용 ( 감독의 설명 ) - 코드에 담긴 결함, TODO 혹은 xxxx같은 표시를 사용하라 - 특정 상수가 특정 값을 가지게 된 사연 - 코드를 읽는 사람이 자기가 작성한 코드의 어느 부분을 보고 뭐라고? 라는 생각을 할지 예측해보고, 그부분에 주석을 달 것 - 평범한 사람이 ..
-
2. 미학 - 읽기 편한 코드 작성Technique/Readable Code 2015. 12. 9. 10:59
■ : 요점▶︎ : 부가이익 ■ 코드를 읽는 사람이 이미 친숙한, 일관성 있는 레이아웃을 사용하라■ 비슷한 코드는 서로 비슷해 보이게 만들어라■ 서로 연관된 코드는 하나의 블록으로 묶어라 - 일관성과 간결성을 위해서 줄 바꿈을 재정렬하기 - 매소드를 활용하여 불규칙성을 정리하자 ▶︎중복된 코드를 없애서 코드를 더 간결하게 한다 ▶︎이름이나 에러 문자열 같은 테스트의 중요 부분들이 한 눈에 보이게 모아졌다. ▶︎새로운 테스트 추가가 쉽다. - 도움이 된다면 코드의 열을 맟춰라 - 의미 있는 순서를 선택하고 일관성 있게 사용하라 - 선언문을 블록으로 구성하라 - 코드를 문단으로 쪼개라 - 여러 블록에 담긴 코드가 모두 비슷한 일을 수행하면 실루엣이 동일 해 보이게 만들어라 - 코드 곳곳을 열로 만들어서 줄을..