티스토리 뷰

study date : 2022-01-27

 

🐻
사내에서 진행한 TDD + 객체지향 관련 스터디를 정리한 포스팅입니다.

keyword

  • 더 나은 코드를 위해 노력
    • ex) 객체지향 생활체조
  • ParameterizedTest

[들어가기 전에]

comfort zone을 벗어나자.

  • 계속해서 배움을 멈추지 않고 더 나은 구조를 생각하며 의식적으로 개발을 하여야 한다.

 

 

SI 개발 10년차인데 코드 좀 봐주세요 | Popit

최근 한국에 머무르는 시간이 길어지면서 Popit 저자 섭외 활동과 병행하여 개발자 멘토링을 꾸준히 하고 있습니다. SI 경력 10년 정도 되는 개발자와 만나서 이야기 한 내용을 대략적으로 정리해

www.popit.kr

[요약]

프로젝트 수행을 하면서 사용하는 기술, 발생하는 문제들을 접할 때

의도적으로 더 깊게, 원론을 찾으려는 노력을 하는 것이 중요하다.

마지막으로, 2~3년만 꾸준히 하면 상위 10%라는 말이 크게 와닿았다.

올바른 방향을 잡아주는 주위의 선임 개발자분들에게 많이 배우면서 배우는 것을 끊임없이 해야겠다고 느꼈다.

 

[요약]

객체지향 생활체조로 개발하는 습관을 들여보자.

 

객체지향 생활 체조 총정리

소트웍스 앤솔러지에서 발췌한 “객체지향 생활 체조”라는 글을 10차례에 이어 연재했습니다. 지금까지 연재한 9가지 객체지향 훈련 지침을 정리하면 다음과 같습니다. 규칙 1: 한 메서드에 오

developerfarm.wordpress.com

규칙 3은 이해가 안 가서 스터디 멘토님이 예를 들어주신 걸 정리해본다.

int형 변수인 money를 사용할 때를 예로 들어보자.

money를 사용할 때는 int형 변수로 사용하지말고 Money라는 클래스로 감싸서(포장해서) 사용하라는 말이다.

// bad
int money;

// good
Class Money {
		int price;
}
Money money;
  • 규칙 4: 한 줄에 점을 하나만 찍는다.
  • 규칙 5: 줄여쓰지 않는다(축약 금지).
  • 규칙 6: 모든 엔티티를 작게 유지한다.
  • 규칙 7: 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.
  • 규칙 8: 일급 콜렉션을 쓴다.

콜렉션을 포함한 클래스는 다른 멤버 변수가 없어야 한다는 규칙

  • 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다

ParameterizedTest

 

JUnit 5 User Guide

Although the JUnit Jupiter programming model and extension model will not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and cus

junit.org

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"

마지막으로 이번 스터디 과제에서 받은 코드 리뷰 중 함께 알면 좋을 것 같은 것들을 정리해보았다.

[하드코딩 없애기]

 

 

하드코딩을 피해라.

tecoble.techcourse.co.kr

[배열보다 리스트를 사용하라]

 

아이템[28]. 배열보다는 리스트를 사용하라

배열과 제네릭 타입에는 중요한 차이가 두 가지 있습니다. 첫 번째, 배열은 공변(convariant)입니다. 어려워 보이는 단어지만 뜻은 간단합니다. Sub가 Super의 하위 타입이라면 배열 Sub[]는 배열 Super[]

kkoon9.tistory.com

[보편적인 표현을 사용하자]

 

클린 코드 [2]. 의미 있는 이름

이름은 이곳 저곳에서 사용하므로 이름을 잘 지으면 여러모로 편하다. 이번 포스팅에서는 이름을 잘 짓는 간단한 규칙을 몇 가지 소개한다. 의도를 분명히 밝혀라 여기서 의도가 분명한 이름이

kkoon9.tistory.com

[매직넘버를 사용하지 말자]

 

1. 의미가 불분명한 매직 넘버를 상수로 선언하라.

프로그래밍에서 상수(static final)로 선언하지 않은 숫자를 매직 넘버, 문자열을 매직 리터럴이라 한다. 이를 정적(static)이고 변경 불가능(final)한 상수로 선언하여 사용하자. 코드에서 상수로 선언

javabom.tistory.com

[기능을 최대한 분리하자(SRP)]

[Tell, Don't ASK]

 

Tell, don't ask 원칙(TDA 원칙)

TDA 원칙이라고도 불린다. 우리 말로 번역해 보자면 "물어보지 말고 그냥 시켜라"가 될 수 있다. 이는 객체와 객체가 협력하는 경우, 다른 객체에게 정보를 요구하지 말고 그냥 행위하도록 시키라

effectiveprogramming.tistory.com

 

'개발 방식 연구 > 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
링크
«   2024/12   »
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
글 보관함