2021-08-21-TIL

Effective Java Item 16~18

Vector and ArrayList

  • https://javapapers.com/core-java/java-collection/difference-between-vector-and-arraylist-in-java/

리스코프 치환 원칙

  • https://steady-coding.tistory.com/383

Stream.reduce()

  • https://www.baeldung.com/java-stream-reduce

final usage

  • https://blog.lulab.net/programming-java/java-final-when-should-i-use-it/

불변객체 (immutable object)

  • https://velog.io/@kyle/%EB%B6%88%EB%B3%80-%EA%B0%9D%EC%B2%B4%EB%9E%80-Java-Immutable-Object

final and immutable

  • https://stackoverflow.com/questions/34087724/what-is-the-difference-between-immutable-and-final-in-java
  • https://www.geeksforgeeks.org/final-vs-immutability-java/#:~:text=final%20means%20that%20you%20can,its%20reference%20to%20another%20one.

Integer vs BigInteger

Integer은 final이지만 BigInteger은 final이 아니므로 상속받아서 얼마든지 바꿀 수 있는 여지가 있다.

  • https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html
  • https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html

Kotlin

val and var

  • https://beginnersbook.com/2017/12/kotlin-variables-data-types/

MutableList

  • https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-mutable-list/

책 추천

  • http://www.yes24.com/Product/Goods/59566585

Tips

IS-A 관계

정사각형 - 직사각형은 is-a 관계가 아니지만 객체관계에서는 is-a 관계로 표현해야한다. K가 말한 이 예시가 매우 적절한 예시였다.

JpaRepository를 바로 상속하지 말자

extends JpaRepository 하지말고, save, findById, findAll만 사용한다면 그것만 인터페이스에 적는다. JpaProductRepository를 따로 만든다음

public interface JpaProductRepository extends ProductRepository, JpaProductRepository<Product, UUID> {
}

우선 FakeRepositry로 개발하고, 마지막에 그것을 test로 옮기면 테스트 코드 작성하기에도 용이하다.

이렇게 하먼 테스트에서 mockito로 레파지토리를 일일이 정의할 필요없이 그냥 FakeRepository를 그대로 사용 가능하다. Mockito는 리플랙션을 쓰기떄문에 성능도 많이 느린데 비해 FakeRepository를 사용하면 성능면에서도 유리하다.