rangnarang

읽기 좋은 코드가 좋은 코드다. (작성중) 본문

읽기 좋은 코드가 좋은 코드다. (작성중)

와이낫? 2018. 12. 13. 15:40

읽기 좋은 코드가 좋은 코드다.






9. 변수와 가독성.


* 쓸데 없이 사용 되는 변수 제거.

* 흐름제어 변수도 제거하는 편이 좋다.

* 흐름제어 변수는 주로 루프구문에서 bool 값으로 진행여부를 처리하게 만드는 변수를 말함.

 
  예) 좌를 우처럼 사용하는 것이 좋다.

 bool isDone = false;

while(조건 && !isDone){

    if (~~~) {

        isDone = true;
        continue;

    }

}

while (조건) {

    if () {

        break;

    }

}


* 좁은 변수 범위.

   - 클래스 멤버 변수도 작은 전역변수나 마찬가지.  가능한 지역변수를 사용할 것.

      클래스 내 멤버변수를 사용하지 않는 메소드를 정적(static)으로 선언해서 클래스 멤버 접근을 제한할 것.

   - 자바스크립트 내 프라이빗 변수 만들기.
      전역변수를 하나의 함수에서 사용하는 코드를 작성했다면 이후 사람은 이 전역변수를 어디서 또 사용하는지 모름.
      이런경우 변수를 클로저로 함수내부에서 사용했다면 이런 문제가 없다. (클로저 활용법 재차 확인할 것)

    -정의는 사용하기 직전에 선언하는 것이 좋다. 위에서 한번에 선언해 봤자 어디서 쓰는지 모름.

    - 값은 한번만 할당하는 변수를 선호할 것. (java - final, javascript - const, C#- readonly)


* 정리.

변수를 덜 사용하고 범위를 줄이고 값이 한번만 할당되게 만들어 코드의 가독성을 높일 것.



PART 3. 코드 재작성하기.

10. 상관없는 하위문제 추출하기.

엔지니어링 = 큰문제를 작은 문제들로 쪼개고 각각의 문제에 대한 해결책을 찾고 다시 하나의 해결책으로 맞추는 일련의 작업.


상위수준에서 봤을때 현재 작성된 코드가 무엇을 말하는지, 어떤것이 목적인지를 인지하고 

직접적인 상관관계가 없는 것들을 별도로 추출해서 함수로 만들 것.

가독성이 높아진다.


일반적인 목적을 가진 함수를 많이 만들고 이를 엮어 utile같은 패키지로 사용.

인터페이스를 단순화 시키는 것도 중요.

적인수의 인수, 설정요구는 하지 말고 사용이 간단할 수록 좋다.

추출이 지나치게 세분화 될 경우 오히려 가독성이 떨어진다.


11. 한번에 하나씩.

코드 내 유형에 따라 정리를 해주는 것이 가독성을 높여준다.

단계별로 동일한 처리만 진행토록 정리 할 것.


12. 생각을 코드로 만들기.

할머니에게 설명할수 없다면 제대로 이해한 것이 아니다. - 알버트 아인슈타인


논리를 명확하고 쉽게 파악 / 표현하는 것이 중요하다.

함수로 뽑아내고 함수 내 매개변수, 로컬변수를 단순화 하여 이해가 편하게 하는 것이 좋다.

요구사항을 쉬운말로 작성하고 이를 수정해가며 코드를 작성할 것.


13. 코드분량 줄이기.

정말 필요한 기능만 사용하고 요구사항 제거, 더 간단한 문제 해결 

코드베이스를 최대한 작게 유지할 것. 커질수록 추가,유지보수가 어렵다.

일반적인 유틸리티를 많이 생성해서 코드를 줄일것. (중복코드 제거)

사용하지 않는 코드 제거.


라이브러리에 친숙해 질것. 매일 API, Library 목록만 확인해도 대단해 진다.


코딩대신 유닉스 도구를 사용하는 방법도 있다.

웹사이트내 오류가 발생하는 페이지 확인시 커맨드라인을 통해 서치하면 바로 체크 가능.

새로 작성하는 코드는 모두 테스트 하고, 문서화하고 유지보수 해야 한다.



PART 4. 선택된 주제들.


14. 테스트와 가독성.

테스트코드는 읽기 쉬워야 한다. 간결해야 하며 사용하기 쉬워야 한다.

에러메세지는 자세할수록 좋다.

라이브러리 적극활용.

테스트 코드는 주로 함수로 작성.

대상함수앞에 "Test_" 식의 접두어를 사용하여 명확한 검사가 가능토록 한다.

테스트의 수정/추가가 쉬워야 한다.


* 좋은 설계.

클래스가 내부상태를 거의 갖지 않음. 이해가 쉽다.

클래스, 함수가 한번에 한가지만 처리. 모듈화에 좋다.

클래스간의 의존성이 낮고 독립적. 

함수들이 간단하고 잘 정의된 인터페이스를 갖는다.


15. 분/시간 카운터 설계/구축하기.

프로그래머가 일반적으로 수행하는 사고의 흐름을 안내.

문제해결시도 -> 성능개선 -> 기능추가.




15장 내용은 매우 알참.
다시 정리해서 작성할 예정.

'' 카테고리의 다른 글

좋은 코드를 작성하는 기술.  (0) 2018.11.19
Comments