TIL
250103 금 TIL
파란배개
2025. 1. 3. 16:49
명령형
-> for, if
-> '어떻게'에 집중
-> 장점: 실수할 확률이 존재, 코드가 복잡해지면 의도가 안 보인다.
-> 단점: 직관적, 자유도 높음
//명령형 -> 실수할 확률이 존재, 코드가 복잡해지면 의도가 잘 안 보인다.
System.out.println("=== 명령형 ===");
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
선언형
-> stream
-> '무엇을'에 집중
//선언형 -> 뭘 하겠다 선언
System.out.println("=== 선언형 ===");
Arrays.stream(arr)
.forEach(System.out::println); //forEach 안에는 이미 만들어진 명령 => 메서드 레퍼런스
//메서드 레퍼런스는 람다 표현식이 단 하나의 메서드만을 호출하는 경우에,
//이 람다 표현식을 더 간단하게 표현할 수 있게 해주는 기능이다.
//이 표시는 더블 콜론(double colon)이라고 부른다.
Arrays.stream(arr)
.forEach(Main::test);
//이 경우, Main에서 test라는 메서드를 참조해서 사용하겠다는 의미가 된다.
예제
public static void exam3() {
int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
//arr의 값에서 각각 2배된 배열 명령형
System.out.println("명령형 2배");
for(int i = 0; i < arr.length; i++) {
System.out.println(arr[i] * 2);
}
//arr의 값에서 각각 3배된 배열 선언형
//Arrays.stream(arr)의 의미는 arr배열을 스트림으로 변환한다는 의미이다.
System.out.println("선언형 3배");
Arrays.stream(arr).forEach(n -> System.out.println(n * 3));
//arr의 값에서 각각 100배된 배열 선언형
System.out.println("선언형 100배");
Arrays.stream(arr).map(n -> n * 100).forEach(System.out::println);
}
--------
TDD
TDD는 분할정복, RGB를 기억하라!
R -> 실패하는 테스트 케이스 작성
G -> 테스트를 통과하는 코드 작성(최소한의 코드로 해결. 꼼수를 부려도 됨) <=이게 TDD의 핵심
B -> 리팩토링 할게 있으면 하고 없으면 다시 R로
키워드
IntStream.rangeClosed()
Arrays.stream()
스트림