티스토리 뷰
study date : 2022-01-27
🐻
사내에서 진행한 TDD + 객체지향 관련 스터디를 정리한 포스팅입니다.
keyword
- 더 나은 코드를 위해 노력
- ex) 객체지향 생활체조
- ParameterizedTest
[들어가기 전에]
comfort zone을 벗어나자.
- 계속해서 배움을 멈추지 않고 더 나은 구조를 생각하며 의식적으로 개발을 하여야 한다.
[요약]
프로젝트 수행을 하면서 사용하는 기술, 발생하는 문제들을 접할 때
의도적으로 더 깊게, 원론을 찾으려는 노력을 하는 것이 중요하다.
마지막으로, 2~3년만 꾸준히 하면 상위 10%라는 말이 크게 와닿았다.
올바른 방향을 잡아주는 주위의 선임 개발자분들에게 많이 배우면서 배우는 것을 끊임없이 해야겠다고 느꼈다.
[요약]
객체지향 생활체조로 개발하는 습관을 들여보자.
- 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다.
- 규칙 2: else 예약어를 쓰지 않는다.
- 규칙 3: 모든 원시값과 문자열을 포장한다.
규칙 3은 이해가 안 가서 스터디 멘토님이 예를 들어주신 걸 정리해본다.
int형 변수인 money를 사용할 때를 예로 들어보자.
money를 사용할 때는 int형 변수로 사용하지말고 Money라는 클래스로 감싸서(포장해서) 사용하라는 말이다.
// bad
int money;
// good
Class Money {
int price;
}
Money money;
- 규칙 4: 한 줄에 점을 하나만 찍는다.
- 규칙 5: 줄여쓰지 않는다(축약 금지).
- 규칙 6: 모든 엔티티를 작게 유지한다.
- 규칙 7: 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.
- 규칙 8: 일급 콜렉션을 쓴다.
콜렉션을 포함한 클래스는 다른 멤버 변수가 없어야 한다는 규칙
- 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다
ParameterizedTest
TDD 스터디에서 CollectionTest를 하던 도중 알게 된 JUnit 기능 중 하나이다.
ParameterizedTest 어노테이션은 method가 매개 변수화된 테스트임을 나타내는 역할을 한다.
ParameterizedTest를 사용하면 서로 다른 인수를 사용하여 테스트를 여러 번 실행할 수 있다.
또한 각 호출에 파라미터를 제공한 다음 테스트 메서드에서 인수를 사용할 valueSource를 하나 이상 선언해야 한다.
@ParameterizedTest
@ValueSource(strings = { "racecar", "radar", "able was I ere I saw elba" })
void palindromes(String candidate) {
assertTrue(StringUtils.isPalindrome(candidate));
}
ParameterizedTest를 실행할 때 각 호출은 별도로 보고된다.
ValueSource말고도 NullSource, EmptySource, EnumSource ,CsvSource 등이 있다.
이 어노테이션을 사용하려면 build.gradle dependencies에 다음 코드를 추가해줘야 한다.
testImplementation "org.junit.jupiter:junit-jupiter-params:5.4.2"
마지막으로 이번 스터디 과제에서 받은 코드 리뷰 중 함께 알면 좋을 것 같은 것들을 정리해보았다.
[하드코딩 없애기]
[배열보다 리스트를 사용하라]
[보편적인 표현을 사용하자]
[매직넘버를 사용하지 말자]
[기능을 최대한 분리하자(SRP)]
[Tell, Don't ASK]
'개발 방식 연구 > TDD' 카테고리의 다른 글
TDD 3주차 스터디 요약 (0) | 2022.05.07 |
---|---|
TDD 스터디 2주차 요약 (0) | 2022.05.07 |
TDD 관련 글 정리 (0) | 2022.02.13 |
AssertJ (0) | 2022.01.29 |
AssertJ vs. JUnit (0) | 2022.01.26 |
- Total
- Today
- Yesterday
- BAEKJOON
- BOJ
- kotest
- 알고리즘
- 디자인 패턴
- AWS
- 이펙티브 자바
- C++
- Spring Boot
- Spring
- Algorithm
- 클린 코드
- 프로그래머스
- 코테
- JPA
- node.js
- MSA
- 객체지향
- kkoon9
- Java
- 테라폼
- programmers
- 디자인패턴
- 백준
- 클린 아키텍처
- Kotlin
- 이팩티브 자바
- Effective Java
- Olympiad
- 정규표현식
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |