만쥬의 개발일기
article thumbnail
[클린 코드] - 12장 창발성, 13장 동시성
📖BOOK/📙Clean Code 2023. 7. 20. 03:20

12장 - 창발성 창발적 설계로 깔끔한 코드를 구현하자. 창발성이라는 말이 조금은 생소할 수 있다. 창발성이란, 복잡한 시스템이나 구조의 특성이 간단한 구성 요소들의 상호작용을 통해 나타나는 현상을 말한다. 다시 말해, 간단한 부분들의 조합으로 인해 전체적인 시스템이나 패턴이 생겨나는 것을 의미한다. 아래 네가지 규칙을 준수한다면 소프트웨어 설계 품질은 크게 높아진다. 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계 규칙 1 : 모든 테스트를 실행하라 테스트가 불가능한 시스템은 검증이 불가능하다. 그리고 검증이 불가능한 시스템은 절대 출시하면 안된다. 결합도가 높으면 테스트 케이스를 작성하기 어려우므로, DIP와 같은 원칙을 적용하고..

article thumbnail
[클린 코드] - 10장 클래스 , 11장 시스템
📖BOOK/📙Clean Code 2023. 7. 18. 14:07

10장 클래스 클래스 체계 클래스 내부 선언 순서는 표준 자바 관례에 따라 정의가 되어있다. 그 순서는 다음과 같다. 정적 공개 상수 (static public) 정적 비공개 변수 (static private) 비공개 인스턴스 변수 공개 변수(거의 존재하지 않는 경우) 공개 함수 비공개 함수(자신을 호출하는 공개 함수 직후에) 때로는 변수나 함수를 protected로 선언하여 테스트 코드에서 접근을 허용하기도 한다. 같은 패키지 안에서 함수 등을 호출하여 테스트 해야한다면, protected로 쓰되 비공개 상태를 유지할 방법을 강구한다. 캡슐화는 항상 지키도록 노력할 것. 클래스는 작아야 한다 클래스의 이름을 지을때는 해당 클래스의 역할을 기술해야한다. 한 클래스의 역할이 너무 많아서는 안된다. 단일 책..