클린 코드[Clean Code] TIL #10. 클래스
book/cleancode 2022. 5. 11. 23:24

​DAY 10 - 22/05/11 오늘 읽은 범위 : 10장 클래스 책에서 기억하고 싶은 내용 클래스 체계( p. 172 ) 클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다. 정적 공개 상수가 있다면 맨 처음에 나온다. 단일 책임 원칙( p. 175 ) 단일 책임 원칙(Single Responsibility Principle : SRP)는 클래스나 모듈을 변경할 이유가 하나, 단 하나 뿐이어야 한다는 원칙이다. SRP는 '책임'이라는 개념을 정의하며 적절한 클래스 크기를 제시한다. 응집도( p. 177 ) 메서드가 변수를 더 많이 사용할 수록 메서드와 클래스는 응집도가 더 높다. 응집도가 높다는 말은 클래스에 속한 메서드와 변수가 서로 의존하며 논리적인 단위로 묶인다는 의미기 ..

클린 코드[Clean Code] TIL #9. 8장. 경계 ~ 9장. 단위 테스트
book/cleancode 2022. 5. 7. 19:19

​DAY 9 - 22/05/07 오늘 읽은 범위 : 8장 경계, 9장 단위 테스트 책에서 기억하고 싶은 내용 8장. 경계 외부 코드 사용하기( p. 144 ) 패키지 제공자나, 프레임 워크 제공자는 적용성을 최대한 넓히려 애쓴다. 사용자는 자신의 요구에 집중하는 인터페이스를 바란다. 경계 살피고 익히기( p. 147 ) 우리 쪽 코드를 작성해 외부 코드를 호출하는 대신, 먼저 간단한 테스트 케이스를 작성해 외부 코드를 익히면 어떨까? 짐 뉴커크는 이를 학습 테스트라 부른다. 9장. 단위 테스트 TDD 법칙 세 가지( p. 155 ) 첫째 : 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 : 컴파일은 실패하지 않으면서, 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 : ..

클린 코드[Clean Code] TIL #8. 오류 처리
book/cleancode 2022. 5. 5. 16:36

​DAY 8 - 22/05/05 오늘 읽은 범위 : 7장 오류처리 책에서 기억하고 싶은 내용 "오류 코드보다 예외를 사용하라" - 오류가 발생하면 예외를 던지는 편이 낫다. 그러면 호출자 코드가 더 깔끔해진다.( p. 131 ) "호출자를 고려해 예외 클래스를 정의하라" - 실제로 외부 API를 사용할 때는 감싸기 기법이 최선이다. 외부 API를 감싸면 외부 라이브러리와 프로그램 사이에서 의존성이 크게 줄어든다. ( p. 137 ) "null을 반환하지 마라" - null을 반환하는 코드는 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘긴다.( p. 139 ) - 메서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예외를 던지거나 특수 사례 객체를 반환한다. ( p.139 ) 오늘 읽은 소감? 떠오..

[Java] 백준 10972 - 이론 및 구현해보기
study/algorithm 2022. 5. 4. 15:35

next permutation이란? 보통 순열과 조합을 구현할 때에는 재귀 함수를 사용하여 구현한다. 하지만 재귀적인 함수의 호출은 구하고자 하는 범위가 넓어질 경우 사용하기 힘들다는 단점이 있다. 이런 단점을 해결할 수 있는 것이 next permutation이라는 알고리즘이다. 단순 일차원 탐색을 통해서 순열, 조합을 구할 수 있다는 장점이 있다. 반복문을 통해서 값을 구하기 때문에 원소의 개수가 N이라 할 때 O(N) 만큼의 시간 복잡도를 가진다. 값을 바꿔주는 swap 과정을 거쳐서 순열을 생성하기 때문에 자연스럽게 순열의 순서도 파악할 수 있다는 장점이 있다. 알고리즘 진행 1. 아래와 같은 배열이 주어졌을 때 배열의 맨 뒤에서부터 탐색을 시작하여 N[index] < N[index+1]인 가장 ..

클린 코드[Clean Code] TIL #7. 객체와 자료구조
book/cleancode 2022. 5. 3. 21:58

DAY 7 - 22/05/03 오늘 읽은 범위 : 6장. 객체와 자료구조 책에서 기억하고 싶은 내용 "자료 추상화" 변수 사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지는 않는다. 구현을 감추려면 추상화가 필요하다! 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. 자료를 세세하게 공개하기보다는 추상적인 개념으로 표현하는 편이 좋다.( p. 119 ) 객체 지향 코드에서 어려운 변경은 절차적인 코드에서 쉬우며, 절차적인 코드에서 어려운 변경은 객체지향 코드에서 쉽다.( p. 122 ) "디미터 법칙" 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙 객체라면 내부 구조를 숨겨야하므로 확실히 디미터 법칙을 위반한다. 반면, 자료구조라..