profile
개발블로그
post-thumbnail

Serialize, 제대로 알고 쓰기

JSON, 때떄로 필요할 때 Protocol Buff 기반을 사용하고, 직렬화는 그만 보내주도록 하자. 새로운 시스템에서 직렬화를 사용할 이유가 없다.일단 구현하고 나면 돌이킬 수가 없다 (이미 해당 스펙을 구현하고 있다로 알기 떄문)버그와 보안 구멍이 생길 위험이 높

2024년 12월 1일
·
0개의 댓글
·
post-thumbnail

동시성, 위험성과 효율 사이

특정 Task가 완료되기를 기다린다.Task 모음 중 아무 것 하나(invokeAny method) 혹은 모든 태스크 (invoke All method)가 완료되기를 기다린다.Executor service가 종료하기를 기다린다 (awaitTermination metho

2024년 11월 28일
·
0개의 댓글
·
post-thumbnail

Exception 과하지도 모자라지도 않게

의미없는 예외 처리는 하지 말자.검사 예외를 던지는 대신 상태 검사 메서드를 활용하라업로드중..

2024년 11월 28일
·
0개의 댓글
·
post-thumbnail

Basic한 프로그래밍 원칙

컴파일타임 타입 검사가 주는 이점을 누릴 수 없음코드가 지저분해지고 장황해지며 성능이 떨어짐

2024년 11월 28일
·
0개의 댓글
·

Effective Method 주의사항

01. 매개변수가 유효한지 검사하라 매개변수가 유요한지 검사하는 기준 어디서 호출되는지가 중요. 검사 규칙도 TPO가 중요 공개된 API일 수록 parameter 검사 기준은 엄격하게 이루어져야 함 내부에서 소화될 코드라면 공개된 API만큼은 아닐 지라도,

2024년 11월 27일
·
0개의 댓글
·
post-thumbnail

Lamda의 우아함과 Stream의 주의사항

람다를 사용할 수 있는 자바 버전이면, 타입 추론 또한 가능하기 때문에 매개변수 타입을 가능하면 생략한다.익명 함수는 이제 (함수형 인터페이스가 아닌) 타입의 인스턴스를 만들 때만 사용return (메서드 빠져나가기), break & continue (반복문 종료 or

2024년 11월 27일
·
0개의 댓글
·

Enum과 Annotation의 Effective한 사용

Enum에서 ordinal()이라는 enum의 번호를 변환해 주는 메서드가 있다.하지만 경우에 따라 넘버링을 bit로 하는 경우도 있고 코드를 잘못 건드리면 겉잡기 힘들다.그러니 인스턴트 필드에 값을 저장해서 사용하는 것이 좋다.jpa의 custom method의 경우

2024년 11월 27일
·
0개의 댓글
·

Generic method와 주의사항

Method의 parameter 타입을, interface의 Type으로 한정한다.genric 타입과 같이 형변환 해야하는 method보다 generic method가 더 안전하고, 심지어 사용허기도 쉽다. (형변환 해야하는 메서드는 generic으로 만들자)Mehto

2024년 11월 27일
·
0개의 댓글
·
post-thumbnail

Generic으로 만들어 사용하기

그렇지 않다면 런타임 시 예외가 발생할 수 있다.List< Objct > 는 명확하게 내가 Objct라는 타입을 제시한 것임하단과 같이 merge해 버린다면, 다른 타입이 들어왔을 때 문제가 생김예외적인 케이스를 제외하면 명확히 타입을 명시하도록 하자.Warnin

2024년 11월 26일
·
0개의 댓글
·
post-thumbnail

Interface와 Class 설계 원칙

클래스 내부에서 사용하는 상수는 내부 구현에 해당된다.오히려 사용자에게 혼란을 줄 수 있다.차라리 클래스에 static final로 추가하는 것이 더 낫다.Nested 되어 있는 member class가 독립적으로 존재할 수 없으며 바깥 instance 없이는 생성할

2024년 11월 26일
·
0개의 댓글
·

Class와 상속

Public 으로 열 경우 Tread safe하지 못하다꼭 필요한 상수라면 예외적으로 public static final로 공개할 수 있다.주의사항 public static final Thing\[] values = {...} 는 수정이 그낭하다

2024년 11월 26일
·
0개의 댓글
·

습관적으로 사용할 수 있는 Object의 공통 메서드

== 를 통해 input이 자기 자신의 참조인지instanceof를 통해 input의 타입이 명확한지2를 통해 검사한 객체를 올바른 타입으로 형변환핵심 필드등ㄹ이 모두 일치하는 지not null if x is not null, then x.equals(null) = f

2024년 11월 26일
·
0개의 댓글
·
post-thumbnail

객체의 파괴

유효 Scope 밖으로 넘어가면 자동으로 GC의 대상이 된다.

2024년 11월 26일
·
0개의 댓글
·

객체의 생성

01. Constructor 대신 Static Factory Method를 고려하라 장점 이름을 가질 수 있다. 간다하고 명확하게 사용할 수 있다. 인스턴스를 매번 생성할 필요는 없다. Flyweight pattern = Collection Object Singleton pattern = Single Object 단점 ...

2024년 11월 26일
·
0개의 댓글
·
post-thumbnail

비선형 자료구조 - Graph

그래프 Graph 정점과 간선으로 이루어진 자료구조 (Cyclic) 연결된 정점간의 관계를 표현할 수 있는 자료구조 용도 : 지하철의 노선도, 통신 네트워크, ... 그래프 구조 ||| |-|-| |정점(Vertex) : 각 노드|간섭(Edge) : 노드와 노드를

2024년 11월 24일
·
0개의 댓글
·

코드를 바라보는 시각 기르기

repository 이름과 README.ml를 보고 프로젝트의 성격 파악패키지 구조를 살펴본다(멀티 모듈인지)build.gradle을 보고 어떤 디펜던시를 쓰는 지 살펴본다.config 패키지 하위에 어떤 설정들이 되어있나 본다.controller 패키지 하위 코드를

2024년 11월 23일
·
0개의 댓글
·
post-thumbnail

동시성을 구현할 때 명심할 것들

어플리케이션을 효율적으로 실행하기 위해 멀티코어를 온전히 활용하도록 구현하는 방식(외부 서비스의 응답을 기다리면서 아무일도 하지 않으면 CPU 사이클이 낭비된다.)

2024년 11월 23일
·
0개의 댓글
·

창발적 설계로 깔끔한 코드 구현하기

00. 창발적 설계란 창발성 (Emergence) 하위 계층에는 없는 특성이나 행동이 상위 계층(전체구조)에서 자발적으로 돌연히 출연하는 현상 > 각각의 개미는 집을 지을 능력이 없지만, 작은 개미들의 상호작용을 통해 집이라는 결과물이 나오는 것 처럼 작은 요소들의 상호작용의 반복이 전체구조에 영향을 미친다. 창발적 설계 모든 테스트를 실행한다. 중복...

2024년 11월 22일
·
0개의 댓글
·
post-thumbnail

관심사 분리 패턴들

소프트웨어 시스템은 준비 과정과 런타임 로직을 분리객체의 생성과 객체를 사용하는 부분은 분리시작 단계는 모든 어플리케이션이 풀어야할 관심사main 함수에서 시스템에 필요한 객체를 생성한 후 어플리케이션에 넘긴다.어플리케이션은 그저 만들어진 객체를 사용한다.모든 객체가

2024년 11월 22일
·
0개의 댓글
·
post-thumbnail

클래스 잘 설계하기

클래스를 개발할 때 기본적으로 구현을 감추고, 외부 객체와 상호작용하는 부분만 노출외부의 잘못된 사용 방지자잘한 단일 클래스가 많아지면 큰 그림을 이해하기 어렵다고 우려.하지만 작은 클래스가 많은 시스템이든 큰 클래스가 몇 개뿐인 시스템이든 돌아가는 부품은 그 수가 비

2024년 11월 22일
·
0개의 댓글
·