Technique
-
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
■ : 요점▶︎ : 부가이익 ■ 코드를 읽는 사람이 이미 친숙한, 일관성 있는 레이아웃을 사용하라■ 비슷한 코드는 서로 비슷해 보이게 만들어라■ 서로 연관된 코드는 하나의 블록으로 묶어라 - 일관성과 간결성을 위해서 줄 바꿈을 재정렬하기 - 매소드를 활용하여 불규칙성을 정리하자 ▶︎중복된 코드를 없애서 코드를 더 간결하게 한다 ▶︎이름이나 에러 문자열 같은 테스트의 중요 부분들이 한 눈에 보이게 모아졌다. ▶︎새로운 테스트 추가가 쉽다. - 도움이 된다면 코드의 열을 맟춰라 - 의미 있는 순서를 선택하고 일관성 있게 사용하라 - 선언문을 블록으로 구성하라 - 코드를 문단으로 쪼개라 - 여러 블록에 담긴 코드가 모두 비슷한 일을 수행하면 실루엣이 동일 해 보이게 만들어라 - 코드 곳곳을 열로 만들어서 줄을..
-
객체지향 설계 5원칙Technique/PHP 2015. 12. 8. 12:17
1. OCP (Open closed principle) 버틀란트 메이어박사가 1998년 객체지향 소프트웨어 설계라는 책에서 Open/Closed Principle 언급함. http://en.wikipedia.org/wiki/Open/closed_principle#Meyer.27s_Open.2FClosed_Principle " 소프트웨어 구성 요소(컴포넌트, 클래스, 모듈, 함수등 )는 확장에 대해서는 개방되어야 하지만 변경에 대해서는 폐쇄되어야 한다고 언급했습니다." 먼저 이원리를 설명하기전에, 부절적한 예를 들어 보겠습니다. 예 : 휴대전화와 충전기의 관계 http://www.zdnet.co.kr/ArticleView.asp?artice_id=00000039134727 최상훈(핸디소프트) - 마소에 기..
-
1. 이름에 정보를 담아라Technique/Readable Code 2015. 12. 8. 11:58
■ 특정한 단어를 사용하라 - 상황에 따라 Get대신 Fetch나 Download를 사용하는 것이 나을 수 도 있다. ■ 꼭 그래야 하는 이유가 없드면 tmp 나 retval과 같은 보편적인 이름의 사용을 피하라 - 제일 뜨끔햇다... 변수명 선언에 신경 써야 겟다... ■대상을 자세히 묘사하는구체적인 이름을 이용하라 - ServerCanStart()는 CanListenOnPort()에 비해 의미가 애매 모호 하다 ■ 변수명에 중요한 세부 정보를 덧붙여라 - 예를 들어 밀리초의 값을 저장하는 변수 뒤에 _ms를 붙이거나 이스케이핑을 수행하는 변수 앞에 raw_를 붙이는 것 리턴 되는 값이 일정하거나 정해진 경우 _char라던지 _int라던지 붙여주면 좋을거 같다. 야리스기 해도 불편하지만 상황에 따라 ■..