토마토의 개발일지
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • Development (144)
      • Languege (39)
        • Java & Spring (27)
        • C# & ASP.NET (5)
        • JavaScript (2)
        • Kotlin (5)
      • DB (0)
        • Oracle (0)
      • Study (72)
        • 네트워크 (3)
        • 이펙티브 자바 (41)
        • 우아한 테크 코스 (7)
        • Next Step (3)
        • Certificate (5)
        • Side Proejct (6)
      • Error (18)
        • 개발환경 (10)
        • 트러블슈팅 (6)
      • Algorithm (12)
      • 개발환경 (1)
      • 회고 (2)
  • 홈
  • 태그
  • 방명록
Study/이펙티브 자바

[Effective Java] 반환 타입으로는 스트림보다 컬렉션이 낫다

💥 개요 원소 시퀀스, 즉 일련의 원소를 반환하는 메소드는 많다. 자바 7까지는 이런 메서드의 반환 타입으로 Collection, List, Set 같은 컬렉션 인터페이스나 Iterable이나 배열을 썼다. 그런데 자바 8이 스트림이라는 개념을 들고 오면서 문제가 발생했는데 스트림은 반복(iteration)을 지원하지 않는다. API를 스트림을 반환하도록 작성하면 for-each로 반복하길 원하는 사용자는 불만을 토론할 것이다. 사실 Stream 인터페이스는 Iterable 인터페이스가 정의한 추상 메서드를 전부 포함할 뿐만 아니라, Iterable 인터페이스가 정의한 방식대로 동작한다. 그럼에도 for-each로 스트림을 반복할 수 없는 이유는 extend하지 않아서다. 🔎 해결방법 이 문제를 해결해줄..

2024. 4. 20. 22:41
Study/이펙티브 자바

[Effective Java] 정확한 답이 필요하다면 float와 double은 피하라

💥 개요 float과 double은 과학과 공학 계산용으로 설계됐다. 이진 부동소수점 연산에 쓰이며, 넓은 범위의 수를 정밀한 '근사치'로 계산하도록 설계됐다. 정확한 결과가 필요하면 사용하면 안되며, 특히 금융 관련 계산과 맞지않는다. 1.03 - 0.42 는 출력시 0.6100000000000001을 출력한다. 이건 특수한 사례도 아니다. ⚠️ 금융 계산에 잘못된 예시 public class Change { // 코드 60-1 오류 발생! 금융 계산에 부동소수 타입을 사용했다. (356쪽) public static void main(String[] args) { double funds = 1.00; int itemsBought = 0; for (double price = 0.10; funds >= p..

2024. 4. 3. 21:55
Study/이펙티브 자바

[Effective Java] 공개된 API 요소에는 항상 문서화 주석을 작성하라

💥 개요 API를 작성함에 있어서 잘 작성된 문서는 중요하다. 공식 언어 명세에는 없지만 자바 프로그래머라면 알아야하는 업계 표준 API라 할 수 있다. 자바에서는 이 귀찮은 작업을 자바독이라는 유틸리티가 도와준다. https://www.oracle.com/technical-resources/articles/java/javadoc-tool.html How to Write Doc Comments for the Javadoc Tool Javadoc Home Page This document describes the style guide, tag and image conventions we use in documentation comments for Java programs written at Java Sof..

2024. 3. 18. 21:34
Study/Next Step

[Next Step] ATDD, 클린 코드 with Spring 8기 3주차 리뷰

🎈 테스트와 의존 의존은 무조건 나쁜가에 대해서 이야기했다. 물론 답은 아니다. 의존이 없으려면 하나의 객체가 모든걸 다 처리해야하고, 변경 요구사항이 발생할 때 복잡해진다. 이를 위해서 적절한 범위로 책임을 나누는게 좋고, 불필요한 의존 대상은 정리해야한다. 🔎 테스트와 관련한 궁금증 1.통합 테스트인 경우 외부 라이브러리를 테스트해야 할까? 외부 라이브러리의 기능을 검증할 필요는 없다. 하지만, 그 부분을 활용하는 로직에 대한 검증은 필요할 수 있고, 외부 라이브러리는 변경할 수 없으니 실제 객체를 활용하는게 좋다. 의존성 테스트를 할때는 실제 외부 의존성을 사용하거나, Stub 혹은 Fake로 대체하자. ❤️ 3주차 후기 외부에 의존하는 인수 테스트 미션을 통해 외부 의존성에 대한 고민을 했던 것 ..

2024. 3. 5. 19:13
Study/이펙티브 자바

[Effective Java] 스트림 병렬화는 주의해서 적용하라

💥 개요 자바에서 동시성 프로그램을 작성하기가 점점 쉬워지고 있지만, 이를 올바르고 빠르게 작성하는 일은 어렵다. 동시성 프로그래밍을 할 때는 안정성(safety)과 응답 가능(liveness) 상태를 유지하기 위해 애써야 하는데, 병렬 스트림 파이프라인 프로그래밍에서도 다를 바 없다. ☠️ 스트림을 잘못 사용하는 예 아이템 45에서 다룬 메르센 소수를 생성하는 프로그램을 살펴보자 public class MersennePrimes { static Stream primes() { return Stream.iterate(TWO, BigInteger::nextProbablePrime); } public static void main(String[] args) { primes().map(p -> TWO.pow(..

2024. 2. 21. 18:55
Study/Next Step

[Next Step] ATDD, 클린 코드 with Spring 8기 2주차 리뷰

🎈 인수테스트 격리하기 인수 테스트를 격리하는 방법은 아래와 같다. @Transactional 어노테이션 활용 @DirtiesContext 어노테이션 활용 @Sql 혹은 쿼리 수행 코드 상으로 테이블 truncate 나의 경우에는 3번째 방법 중 쿼리를 사용하고 @interface로 선언하여 클래스단에 어노테이션을 붙이면 쉽게 사용할 수 있도록 하였다. 이 방법은 DB마다 동작하지 않을 수 있지만, JPA에서 @Embeddable과 같이 중간 테이블이 생기는 경우도 초기화를 쉽게 할 수 있어서 이 방법을 선택했다. @Transactional RANDOM_PORT나 DEFINED_PORT 사용 할 경우 실제 서블릿 환경이 제공됨 HTTP Client와 Server는 다른 스레드에서 동작 따라서 @Trans..

2024. 2. 17. 15:21
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • ···
  • 12
  • »

공지사항

  • GitHub & WorkSpace

전체 카테고리

  • Development (144)
    • Languege (39)
      • Java & Spring (27)
      • C# & ASP.NET (5)
      • JavaScript (2)
      • Kotlin (5)
    • DB (0)
      • Oracle (0)
    • Study (72)
      • 네트워크 (3)
      • 이펙티브 자바 (41)
      • 우아한 테크 코스 (7)
      • Next Step (3)
      • Certificate (5)
      • Side Proejct (6)
    • Error (18)
      • 개발환경 (10)
      • 트러블슈팅 (6)
    • Algorithm (12)
    • 개발환경 (1)
    • 회고 (2)
애드센스 광고 영역
  • 최근 글
  • 최근 댓글

최근 글

최근댓글

태그

  • #후기
  • #클라우드
  • #spring boot
  • #김영한 스프링
  • #이펙티브자바
  • #도메인 주도 개발
  • #스프링
  • #kotlin
  • #개발자
  • #구글 클라우드
  • #백준
  • #Java
  • #effective java
  • #스프링부트
  • #백엔드
  • #김영한
  • #saa
  • #우테코
  • #spring
  • #TDD
  • #GCP
  • #BOJ
  • #트러블슈팅
  • #파이썬
  • #자바
  • #제네릭
  • #AWS
  • #코틀린
  • #이펙티브 자바
  • #객체지향
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

Powered by Privatenote Copyright © 토마토의 개발일지 All rights reserved. TistoryWhaleSkin3.4

티스토리툴바