본문 바로가기

전체 글172

정확한 답이 필요하다면 float와 double은 피하자 🏃‍♂️ 이 글은 책 이펙티브 자바 3판 Item60을 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 주제 일반적인 프로그래밍 원칙 결론 float와 double은 근사치이기 때문에 정확한 계산(e.g. 금융)은 맞지 않다. 정확한 계산에는 BigDecimal으로 바꾸거나 정수 타입으로 스케일을 바꾼 뒤 계산한다 float나 double는 부동 소수점의 정밀도 차이로 정확한 값 비교가 틀릴 수 있다. 이를 위해 자바에서 BigDecimal을 사용하거나 소수값을 정수로 스케일을 변경하여 ( e.g. 0.01달러 = 1센트, 1.25달러 = 125센트) 계산하자 @Test void double_연산() { double d1 = 1.03; double d2 = 0.42; double result = d1.. 2022. 1. 18.
표준 라이브러리를 익히고 사용하자 ㉿ 이 글은 책 이펙티브 자바 3판 Item59과 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 결론 표준 라이브러리를 사용하자 (바퀴를 다시 발명하지 말자) 학습 목적으로 라이브러리를 재구현 해보는 것은 좋은 일이다. 하지만 프로덕트 코드에서 이미 있는 메서드를 다시 구현할 필요가 있을까? 표준 라이브러리 사용 장점 1. 전문가들이 구현한 코드 2. 직접 구현한다고 시간 허비하지 않아도 됨 3. 성능의 지속적인 개선 (라이브러리 업데이트) 4. 기능 추가 (라이브러리 업데이트) 5. 다른 사람이 봤을 때 낯익은 코드가 됨 그렇다면 왜 표준 라이브러리를 안 쓸까? 대부분 잘 몰라서이다. 자바의 경우 표준 라이브러리가 방대하다 보니 원하는 기능을 찾기가 어렵다. 그래도 자.. 2022. 1. 18.
지역 변수의 범위를 줄여 쉬운 코드 작성하기 (feat. while 보다는 for) 이 글은 책 이펙티브 자바 3판 Item57을 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 주제 일반 프로그래밍 원칙 결론 지역 변수가 많거나 범위가 넓으면 오류 발생이 크다. 지역 변수의 유효 범위를 최소로 줄이면 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역 변수의 범위와 오류를 줄이는 방법 5가지를 알아보자 ✅ 1. 가장 처음 쓰일 때 선언하기 C언어 개발자들은 지역 변수를 코드 블록 첫머리에 선언하는 경우가 많았다. 하지만 코드가 길어지면 정작 사용할 때 이해가 어렵다. 자바에서는 어디서든 선언 가능하니 사용하기 직전에 선언하자 public class Car { public static void main(String[] args) { String name = "BMW.. 2022. 1. 18.
[주간 회고] 22.01. 2주차 ☕️ 일기 형태로 작성되었습니다. 월요일 새로운 팀원들을 만났다. 첫 만남의 어색함을 깨고 싶어 질문을 하고 잡담을 즐겼다. 그러다 보니 자연스레 진행자가 된 느낌이었다. 새로운 프로젝트가 주어졌다. 이번 프로젝트도 저번 주에 이어 단위 테스트를 적용 해보았다. 하루 동안의 시행착오 끝에 테스트 코드는 다 좋은 게 아니며, 좋은 단위 테스트 코드를 식별하고 구현해야 한다는 것을 깨달았다. 자세한 내용은 아래 일일 회고에서 볼 수 있다. [일일 회고] 22.01.10.월 - 테스트 코드, 다 좋은 게 아니었어.. 화요일 오늘은 팀원들과 그룹 리뷰를 진행했다. 어제저녁 잡담을 오래 나눈 탓이었을까? 좀 더 열린 분위기였다. 9명 팀원의 코드를 볼 수 있었다. 팀원들의 코드는 인터페이스를 통해 추상화를 하였고, 커.. 2022. 1. 16.
모든 구현 클래스에서 Object의 toString 재정의를 고려하자 🗣 이 글은 책 '이펙티브 자바 3판 Item 12'와 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 주제 공통 메서드 : 자바의 클래스들은 최상위 클래스 “Object”를 모두 상속받고 있다. Object에서 final 메서드가 아닌 메서드 (equals, hashCode, toString, clone, finlized)가 있다. 왜 최상위 클래스에서 final 메서드를 제외한 메서드를 하위 클래스에 상속시킬까? 바로 클래스를 만드는 프로그래머, 사용자가 재정의하여 사용하라고 설계했기 때문이다. 하지만 규칙 없이 사용자 마음대로 사용하면 치명적일 수 있기 때문에 Object API 명세에 일반 규약이 명확히 정의되어 있다. 그중 toString() 메서드를 어떻게 오버.. 2022. 1. 15.
객체 생성할 때 '생성자' 대신 '정적 팩터리 메서드'를 써볼까? 🏭 *이 글은 책 '이펙티브 자바 3판 Item 1'과 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 주제 객체 생성 : 인스턴스 생성 방법은 두 가지가 있다 하나는 전통적인 public 생성자 방법과 또 다른 하나는 정적 팩터리 메서드(static factory method) 방법이다. 예제 // 두 가지 인스턴스 생성 방법 public class Book { private String title; private String author; // 1. public 생성자 public Book(String title) { this.title = title; } // 2. 정적 팩터리 메서드 public static Book createBookWithTitle(String .. 2022. 1. 15.