토마토의 개발일지
  • 홈
  • 태그
  • 방명록
  • 메뉴 닫기
  • 글작성
  • 방명록
  • 환경설정
    • 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/Next Step

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

ATDD-Subway-Map 이라는 프로젝트를 Next Step에서 시작하게 되었다. Book-Crew 라는 기술서적을 읽고, 서로 리뷰하고 모르는걸 찾아보면서 공부하는 스터디를 진행하고 있는데, 스터디원중에 한분께서 Next Step을 추천하셨고, 정말 많은 도움을 얻었다고 들었다. 이번 교육의 일정은 아래와 같다. 📻 교육일정 교육 기간은 2024-01-22(월) ~ 2024-02-29(목) 입니다. 교육기간 동안 온라인 강의는 라이브로 진행될 예정이며 교육기간 중 매주 목요일에 5회 진행됩니다. 첫 강의 전에 교육이 시작되는 이유는 사전 미션 및 강의 수강 준비를 위해서입니다. 1월 25일: 1주차 강의 2월 1일: 2주차 강의 2월 3일: 모짝미(모여서 짝 프로그래밍 미션) 희망자에 한해서 오프라..

2024. 2. 2. 15:27
Study/이펙티브 자바

[Effective Java 3E] 제네릭과 가변인수를 함께 쓸 때는 신중하라

💥 개요 가변인수와 제네릭은 잘 어우러지지 않는다. 가변인수 메서드를 호출하면 가변인수를 담기 위한 배열이 자동으로 하나 만들어지는데(컴파일 시점에 변환됨) 내부적으로 처리해야하는 이 배열을 그만 클라이언트에 노출하는 문제가 생겼다. 그 결과 varargs 매개변수에 제네릭이나 매개변수화 타입이 포함되면 알기 어려운 컴파일 경고가 발생한다. 매개변수화 타입의 변수가 타입이 다른 객체를 참조하면 힙 오염이 발생한다. 이렇게 되면 typesafe하지 않아 형변환 에러가 발생하고 제네릭 타입의 타입 안정성이 흔들린다. ☠️문제상황 public class Dangerous { // 코드 32-1 제네릭과 varargs를 혼용하면 타입 안전성이 깨진다! (191-192쪽) static void dangerous(..

2023. 12. 4. 17:34
Study/이펙티브 자바

[Effective Java 3E] 한정적 와일드카드를 사용해 API 유연성을 높이라

💥 개요 이전 포스팅에서 얘기했듯이 매개변수화 타입은 불공변이다. 즉 서로 다른 타입 Type1 , Type2가 있을 때 List은 List의 상위타입도 하위 타입도 아니다. List에는 어떤 객체든 넣을 수 있지만 List은 문자열만 넣을 수 있다. 즉, List은 List가 하는 일을 제대로 수행하지 못하니 하위타입이 될 수 없다.(리스코프 치환 원칙에 어긋난다.) 때로는 불공변 방식보다 유연한 무언가가 필요하다. 🛠️ 와일드 카드 타입 적용 이런 경우 와일드 카드 타입으로 해결이 가능하다. public class Stack { private E[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 1..

2023. 12. 2. 14:31
Study/이펙티브 자바

[Effective Java 3E] 이왕이면 제네릭 타입으로 만들라

💥 개요 JDK가 제공하는 제네릭 타입과 메서드를 사용하는 일은 일반적으로 쉬운 편이지만, 제네릭 타입을 새로 만드는 일은 조금 더 어렵다. 그래도 배워두면 값어치는 충분히 한다. public class Stack { private Object[] elements; private int size = 0; private static final int DEFAULT_INITIAL_CAPACITY = 16; public Stack() { elements = new Object[DEFAULT_INITIAL_CAPACITY]; } public void push(Object e) { ensureCapacity(); elements[size++] = e; } public Object pop() { if (size =..

2023. 11. 28. 23:08
Study/우아한 테크 코스

[우아한 테크 코스] 프리코스 - 4주차, 크리스마스 회고

✨ 목표 마지막 4주차 프리코스에서 피드백과 코드리뷰를 통해 적용 및 공부하기로 마음을 먹은 부분은 1.Stream을 활용 심화 2.객체는 객체스럽게 사용 3.필드의 수를 줄이기 위해 노력 4.ParameterizedTest 5.함수형 프로그래밍 활용 5가지였다. 🔍달성 Stream을 활용 심화 stream의 경우에는 코드리뷰를 받았는데, Stream에 대해서 제대로 공부하지 않고 주먹구구 식으로 사용했기 때문에, 이를 공부해 더 자유롭게 Stream을 활용할 수 있도록 마음을 먹었다. stream의 장점이라고 생각하는건 언제든 병렬로 처리할 수 있도록 큰 노력없이 변경이 가능하고, 가독성과 간결성을 챙기기 위해서다. 그리고 컬렉션을 잘 활용하기 위해 stream을 사용해야 된다고 생각했다. 객체는 객체..

2023. 11. 21. 20:46
Study/이펙티브 자바

[Effective Java 3E] 배열보다는 리스트를 사용하라

💥 개요 배열과 제네릭 타입에는 중요한 차이가 두가지 있다. 배열의 경우 Sub가 Super의 하위 타입이라면 배열 Sub[]는 배열 Superp[]의 하위 타입이 된다.(공변) 하지만 제네릭은 불공변이다. List가 List의 하위 타입이 아니다.(불공변) 그럼 제네릭이 더 안 좋은걸까? 배열의 문제점 Object[] objectArray = new Long[1]; objectArray[0] = "타입이 달라 넣을 수 없다."; // ArrayStoreException을 던진다. 위의 코드는 런타임에 실패한다. 하지만 다음 코드는 컴파일 시점에 실패한다. List ol = new ArrayList(); // 호환되지 않는 타입이다. ol.add("타입이 달라 넣을 수 없다."); 어느쪽이든 문자열을 넣..

2023. 11. 10. 22:01
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • ···
  • 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
  • #코틀린
  • #saa
  • #스프링
  • #자바
  • #파이썬
  • #클라우드
  • #트러블슈팅
  • #백엔드
  • #kotlin
  • #후기
  • #객체지향
  • #spring boot
  • #우테코
  • #Java
  • #백준
  • #AWS
  • #BOJ
  • #GCP
  • #이펙티브자바
  • #김영한 스프링
  • #effective java
  • #이펙티브 자바
  • #도메인 주도 개발
  • #구글 클라우드
  • #스프링부트
  • #TDD
  • #제네릭
  • #개발자
MORE

전체 방문자

오늘
어제
전체

블로그 인기글

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

티스토리툴바