만쥬의 개발일기
article thumbnail
[이펙티브 자바] - 아이템 60 ~ 63
📖BOOK/📙Effective Java 2024. 6. 4. 17:28

아이템 60 - 정확한 답이 필요하다면 float와 double은 피하라float와 double 타입은 과학 / 공학 계산용으로 설계되었다.해당 자료형들은 부동소수 타입으로, 정확한 결과를 위해서는 사용을 지양해야 한다.실수를 표현하는 방법 두가지실수를 표현하는 방법은 다음 두가지이다.고정 소수점 방식: 소수점에 이용하는 범위를 고정해 수의 표현 범위가 크지 않다.부동 소수점 방식: 소수점을 이용하지 않아 그만큼 다른 수를 표현할 수 있도록 더 넓은 표현 범위를 가진다.부동 소수점 방식을 사용하는 자료형인 double, float등 에서는 실수 연산에서는 소수점 단위 값을 정확히 표현하는 것이 아닌 근사값으로 처리해 오차가 발생한다.정확한 계산을 위해서는따라서 정확한 계산을 위해서는 BigDecimal ..

article thumbnail
[이펙티브 자바] - 아이템 29 ~ 31
📖BOOK/📙Effective Java 2024. 2. 28. 10:21

아이템 29 - 이왕이면 제네릭 타입으로 만들라 왜 굳이 제네릭 타입을 사용해야할까? 예시와 함께 알아보자. 오브젝트를 기반으로 제작된 Stack 클래스 예시. 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 == 0 throw n..

article thumbnail
[이펙티브 자바] - 4장 아이템 18 ~ 20
📖BOOK/📙Effective Java 2024. 2. 5. 21:45

아이템 18 : 상속보다는 컴포지션을 사용하라 상속 vs 컴포지션 여기서의 상속은 클래스가 다른 클래스를 확장하는 구현 상속을 의미. 인터페이스가 다른 인터페이스를 확장하는 인터페이스 상속과는 무관하다. 상속은 한 클래스를 다른 클래스에서 derive 즉 파생 시킨다. ex) extend 받은 확장된 클래스가 파생됨 컴포지션은 parts 즉 클래스를 구성하는 부분의 합으로 정의한다 ex) 클래스 필드 내에 private or public 필드로 클래스의 인스턴스를 참조하게 하고해당 클래스를 구성하는 부분의 합으로 정의됨.클래스의 구성요소로 쓰인다는 뜻에서 composition이라고 한다. 상속이 위험한 이유 : 상위 클래스 또는 슈퍼 클래스의 릴리스마다 내부 구현이 달라질 수 있고, 이에 따라 하위 클래..

article thumbnail
[이펙티브 자바] - 1장 ~ 2장
📖BOOK/📙Effective Java 2024. 1. 2. 22:46

1장 : 들어가기 이 책은 총 90개의 아이템과, 아이템들을 주제별로 묶은 11개의 장으로 구성된다. 또한 많은 디자인 패턴과, 피해야할 안티패턴들을 소개한다. 이 책의 용어들은 대부분 자바8용 언어 명세를 따른다. 자바가 지원하는 타입은 다음 네가지이다. 인터페이스 클래스 배열 (array) 기본타입 (primitive) 위 네가지 타입 중 처음 세가지는 참조 타입(reference type)이다. 즉, 클래스의 인스턴스와 배열은 객체이지만, 기본 타입은 그렇지 않다. 클래스의 멤버로는 필드, 메서드, 멤버 클래스, 멤버 인터페이스 등이 있따. 메서드 시그니처는 메서드 이름과 파라미터의 타입들로 이뤄진다. 또한 이 책에서는 인터페이스 상속 ➡️ 클래스가 인터페이스를 구현한다 or 인터페이스가 다른 인터..

article thumbnail
[클린 아키텍쳐] 25장 ~ 29장

25장 계층과 경계 시스템은 세가지 컴포넌트 (UI,업무 규칙, 데이터베이스)로 구성되어있다고 생각할 수 있지만, 실제로는 훨씬 많다. 움퍼스 사냥 게임 게임 규칙은 게임의 상태를 영속성을 가지는 특정한 데이터 구조로 저장한다. UI 컴포넌트가 어떤 언어를 사용해도 게임 규칙을 재사용 가능. 데이터 저장소 또한, 고수준인 게임 규칙을 의존하는 형태이다. 클린 아키텍처? 잠재된 아키텍쳐 경계를 존재할 수 있다. 이를 그림으로 나타내면 다음과 같다. 점선으로 된 테두리 : API를 정의하는 추상 컴포넌트 해당 API는 위나 아래의 컴포넌트가 대신 구현한다. 그리고 api는 구현하는 쪾이 아닌, 사용하는 쪽에 정의되고 소속된다. EX) Game Rules 내부 코드에서 사용하나 Language 내부 코드에서 ..

article thumbnail
[TDD] 18장 ~ 21장
📖BOOK/📙TDD 2023. 9. 4. 16:15

2부 xUnit이란? 이 책의 저자 켄트 백이 고안한 프레임워크인 Sunit으로부터 기능과 구조를 착안한, unit testing framework를 통틀어 칭하는 명칭이다. 파생상품으로는 Junit, Nnuit, xUnit.net 등이 있다. 18장 xUnit으로 가는 첫걸음 2부의 주제 TDD를 통해 실제 소프트웨어를 만드는 발전된 예제 자기 참조 프로그래밍에 대한 전산학 실습 이번 장에서 할 일 테스트 프레임워크를 테스트 주도 개발로 만들기. 테스트 메서드 호출하기 먼저 setUp 호출하기 나중에 tearDown 호출하기 테스트 메서드가 실패하더라도 tearDown 호출하기 여러 개의 테스트 실행하기 수집된 결과를 출력하기 테스트 메서드가 호출되면 true를 반환하는 원시테스트 작성 책에서는 tes..

article thumbnail
[클린 아키텍쳐] - 5장 ~ 11장 정리

클린 아키텍쳐 5장 ****객체 지향(Objected - Oriented)의 본질은 무엇인가?**** 캡슐화? 객체 지향 언어는 데이터와 함수를 쉽고 효과적으로 캡슐화하는 방법을 제공한다. 이를 통해 데이터와 함수가 응집력 있게 구성된 집단을 서로 구분 짓는 선을 그을 수 있다. 구분선 바깐에서 데이터는 은닉되고, 일부 함수만이 노출된다. c언어에서도 데이터 구조와 함수를 헤더파일(노출부)에 선언하고, 구현 파일(은닉부)에서 구현하는 방식으로 캡슐화를 지킬 수 있다. 상속화? 객체 지향 언어는 캡슐화를 강제하지 않지만, 상속은 확실히 제공한다. C언어에서는 상속을 흉내낼 수 있을 뿐, 상속의 기능을 제공하진 않았따. 다형성? 다형성은 기존에 존재하던 함수 포인터를 응용한 것이다. 다형성의 매력은 , 의존..

article thumbnail
[TDD] - 1장 ~ 3장
📖BOOK/📙TDD 2023. 8. 3. 13:03

들어가는 장 권장하는 TDD 훈련 방법 간단하고 쉬운 문제들을 TDD로 시도한다. 가능하면 전에 접하고, 프로그래밍해본 문제가 좋다. 초록 막대 주기(이전 초록 막대와 다음 초록 막대 사이의 간격)는 가능하면 짧도록 한다. 초록 막대 주기의 최대 시간을 정하고, 이를 초과하면 이전 초록 막대 상태로 돌리고 새로 시작한다. '진짜로 만들기 전까지만 가짜로 구현하기' 를 적극적으로 사용하려고 노력한다. 같은 문제를 여러번풀어본다. 초기에는 리팩토링 툴을 사용하지 않는 것이 좋다. 개발을 할 때 하항상 다음 두가지 법칙을 따른다. 어떤 코드건 작성하기 전에 실패하는자동화된 테스트를 작성할 것 중복을 제거할 것 뱅크 샐러드 개발자님과의 만남 최근 실제로 사내 대부분의 IOS 사업부에서 사용할 스위..