티스토리 뷰
원본글은 github에 있습니다.
제가 현재 사용하는 클래스/메소드를 네이밍하는 방법을 소개합니다.
제 방법에 대한 의견/비판 환영합니다!
방법
- 요구사항을 간결히 한다.
- 요구사항을 템플릿으로 변경한다.
- 구현한다.
요구사항 간추리기
- 50자가 넘지 않는 문장을 사용한다.
- 50자가 넘으면 문장을 나눈다.
- 1문장이 완성되면, 작업을 시작할 수 있다.
- 진행중에 먼저 작업해야할 요구사항(작업사항)이 생기면 그 것부터 한다.
템플릿
Result result = new What(input1, input2).action();
What은 명사 or 명사구
action은 동사(return 이 없으면) or 명사(뭔가 return하면)
Result 명사 or 명사구
로 하되 간결하게 한다.
예시
요구사항
쉼표(,) 또는 콜론(:)을 구분자로 가지는 문자열을 전달하는 경우 구분자를 기준으로
분리한 각 숫자의 합을 반환 (예: “” => 0, "1,2" => 3, "1,2,3" => 6, “1,2:3” => 6)
앞의 기본 구분자(쉼표, 콜론)외에 커스텀 구분자를 지정할 수 있다. 커스텀 구분자는
문자열 앞부분의 “//”와 “\n” 사이에 위치하는 문자를 커스텀 구분자로 사용한다.
예를 들어 “//;\n1;2;3”과 같이 값을 입력할 경우 커스텀 구분자는 세미콜론(;)이며, 결과 값은 6이 반환되어야 한다.
방법1: 요구사항 간결화
문자열을 구분자(커스텀 가능)로 분리
분리한 숫자의 합 반환
방법2: 템플릿으로 변경
List<Integer> numbers = new Numbers("1;2;3", ";").value();
int sum = new Sum(numbers).value();
방법3: 구현
class SplitedNumbersTest {
@Test
void test() {
List<Integer> numbers = new SplitedNumbers("1;2;3", ";").value();
assertThat(numbers.get(1)).isEqualTo(2);
}
}
class SplitedNumbers {
private final String numbers;
private final String separator;
SplitedNumbers(String numbers, String Separator) {
this.numbers = numbers;
this.separator = Separator;
}
List<Integer> value() {
return Arrays.stream(numbers.split(separator))
.map(number -> Integer.parseInt(number))
.collect(Collectors.toList());
}
}
class SumTest {
@Test
void test() {
int sum = new Sum(Arrays.asList(1, 2, 3)).value();
assertThat(sum).isEqualTo(6);
}
}
class Sum {
private final List<Integer> numbers;
public Sum(List<Integer> numbers) {
this.numbers = numbers;
}
int value() {
return numbers.stream()
.mapToInt(Integer::intValue)
.sum();
}
}
선언적?
- 클래스 필드는 모두 final
- void 메소드 사용금지
를 추가하면 불변객체가 만들어지고, 선언형 프로그래밍에 가까워지는 것 같다.
참조
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 취업
- 자소서
- agile
- 객체지향프로그래밍
- 객체지향
- 앨런 캐이
- XP
- DDD
- 익스트림 프로그래밍
- 애자일
- 도메인 주도 설계
- 전략적설계
- Object Oriented
- 기본은 테스트코드
- strategic design
- Yegor
- 도메인주도설계
- Domain Driven Design
- repositorytest
- OO
- nhn
- Test Code
- akoop
- testcode
- 테스트 코드
- repository test
- Object Oriented Programming
- OOP
- 테스트코드
- Alan Kay
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함