프로그램을 짜면 명령행 인수의 구문을 분석해야할 때가 종종 있다. 이 때 편리한 유틸리티가 없다면 main 함수로 넘어오는 문자열을 직접 분석해야한다. ‘클린코드’ 책에서 새로 짜는 유틸리티를 Args라고 칭하겠다. 간단한 Args 사용법 Args 생성자에 입력으로 들어온 인수 문자열 및 형식 문자열을 넘겨서 Args 인스턴스를 생선한다. 이후...
동시성이란 - 동시에 실행되는 것처럼 보이는 성질 싱글 코어에서 멀티 스레드를 동작시키는 방식이다. 이를 채택하는 이유는 무엇과 언제를 분리하여 어플리케이션 구조와 효율을 극적으로 높이기 위해서다. 구조적 관점에서 프로그램이 작은 프로그램들로 쪼개어져 보인다. 효율적 관점에서 응답 시간 및 작업 처리량이 개선된...
창발성 : 불시에 솟아나는 특성으로, 단순한 결합들이 복잡한 결과를 나타내는 것. 창발적 설계 : 규칙과 원칙을 지켜 설계를 하면 그것들이 모여 좋은 거시적 설계가 된다. 창발적 설계로 클린 코드를 구현하자 켄트 벡에 의하면 네 가지 규칙을 따른 설계는 단순한 설계라고 칭한다. 모든 테스트를 실행한다. ...
소프트웨어어에 시스템을 설계한다고 생각해보자. → 각 분야별로 시스템을 모듈화 할 것이며, 서로 이를 공유해야한다. 이 때 시스템들이 비슷한 수준의 추상화를 이룬다면 협업이 더 수월해질 것이다. 코드를 깨끗이 유지한다면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다. 시스템의 생성과 사용을 분리하라 시스템 제작, 즉 생성은...
클래스를 정의하는 표준 자바 관례에 따르면, 하나의 클래스 안에서 순서는 다음과 같다. 모든 상수 및 변수, 메소드는 public → protected → package → private 순서로 적는다. static 상수 → static 변수 → instance 변수 → 메서드 ⇒ 테스트 등을 위해...
단위테스트란 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트다. 하나의 모듈이란 하나의 기능 또는 클래스가 될 수 있다. 오랜 기간 단위테스트는 단순히 자기 프로그램이 돌아가는 것에 대한 확인에 불과했다. 현재는 애자일 방법론과 TDD로 인해 단위 테스트를 자동화하여 개발을 ...
이번에 다룰 경계는 개발자가 직접 짠 코드와 외부에서 가져오는 코드 사이의 호출 로직 상 부분이다. 나아가 아는 코드와 모르는 코드를 분리하는 부분도 다룰 예정이다. 외부 코드와 개발자 코드 사이의 경계 외부 코드는 범용성 및 적용성을 생각해 최대한 많은 케이스에 대응하여 코드를 작성한다. 내부(개발자) 코드는 자...
코드의 많은 부분은 오류를 처리하는 코드가 차지하고 있으므로, 오류 처리와 깨끗한 코드는 연관성이 있다. 그러한 이유로 오류 처리를 현명하게 하여 깨끗한 코드를 유지해야한다 오류 코드보다 예외를 사용하라 오류 플래그를 사용하여 오류를 반환하는 것보다 오류 발생 시 예외를 던지게 하면 호출자 코드가 깔끔해진다. ...
비공개로 정의한 변수를 왜 조회 및 설정 함수로 공개하는 지에 대한 의문 및 이야기 자료 추상화 구현을 감추기 위해서는 추상화를 해야한다. 비공개로 정의한 변수의 조회 및 설정 함수 등을 공개한다면, 이는 구현을 외부로 노출하는 것이다. 추상 인터페이스를 제공하여 사용자에게 구현을 노출하지 않고 자료를 ...
왜 코드 형식을 맞춰야하는가 코드의 가독성을 높이기 위해 유지보수를 원활하게 및 일관성 있게 이번 장에서는 코드를 작성할 때 주의해야 할 형식적인 요소들에 대해 다룹니다. 코드를 작성할 때는 가독성을 높이고 유지보수를 쉽게 하기 위해 일관성 있게 형식을 맞춰야 합니다. 세로 형식 ...
주석은 왜 사용하는가 몇몇 주석은 설명 혹은 기타 정보 전달을 위해 작성한다. 하지만 정말 코드를 잘 작성한다면 주석은 필요하지 않다. 주석은 나쁜 코드를 보완하지 못한다. 일반적으로 코드가 명확히 설계되지 않았을 때 주석을 사용한다. 하지만 이는 주석을 달기보다 더욱 코드를 ...
함수를 읽기 쉽고 이해하기 쉽게 짜는 방법. 의도를 분명히 표현하는 방법 등 함수를 짜는 방법론 소개 함수는 짧고 간결하게 만들어야한다. 예전 프로그래머는 짧게 만드는 것이 필수였음. 한 화면 안에서 짜야했기 때문. 반드시 한 화면에 들어가게 짜자. 또한 함수는 최대한 짧게 (20줄 이내)로 만드는 것을 지향하자. ...
코드가 사라질까? 코드는 사라질 가망이 전혀 없다. 코드는 요구사항을 상세히 표현하는 수단이다. 코드는 점점 추상화된다. 좋은 일이지만, 이는 코드가 사라질 것이라는 근거가 되지 않는다. 결국 낮은 단계의, 기술을 명세하는 코드가 필요하기 때문이다. 나쁜 코드가 초래하는 일 나...