본문 바로가기

☕️ JAVA25

자바 enum에서 ordinal 메서드 사용하지마...(세요) 🚫 이 글은 책 이펙티브 자바 3판 Item35와 하단 Reference 참고했습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 한 줄 요약 enum에서 ordinal 메서드 사용하지 말고 인스턴스 필드를 써라 enum 클래스에 기본 내장으로 ordinal() 메서드가 있다. 해당 상수가 열거 타입의 몇 번째 위치진이 반환하는 메서드이다. 아래 Esenmble enum에서 순서는 SOLO, DUET, TRIO... 순으로 oridinal()은 0, 1, 2... 순으로 결과가 나온다. numberOfMusicians() 메서드는 이 결과에 +1 하여 리턴하니 1,2,3,4,5... 순서의 값으로 나온다. enum Esenmble { SOLO, DUET, TRIO, QUARTET, QUINTET, SEX.. 2022. 1. 21.
자바의 'enum'과 'lambda'를 클래스로 이해해보기 🔎 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 자바의 'enum'과 'lambda'가 클래스로 어떻게 구현되는지 살펴보고 비교해보자 목차 enum과 클래스 lambda, 사용 방법과 주의사항 enum, enum + lambda, 클래스 비교 enum 보통 enum(열거형)은 일정 개수의 상수 값을 정의하고 이 값을 문자열로 대체하여 하드 코딩을 아름답게(?) 만들어 준다. 자바의 enum은 어떨까? 사실 조금 특별하다. 아래 예는 Operation 이름의 enum이다. enum Operation { PLUS("+"), MINUS("-"), TIMES("*"), DIVIDE("/"); private final String op; Operation(String op) { this.op = op; } } 위 .. 2022. 1. 21.
최적의 시간 복잡도를 찾아서 🐠 * 이 글은 책 소프트웨어의 품격 3장을 참고하여 작성되었습니다. 잘못된 내용이 있다면 편하게 말씀해주세요 🙏🏻 '시간 복잡도'는 알고리즘이 어떤 문제를 해결하는 데 걸리는 시간을 의미한다. 어떤 문제를 해결하는(같은 결과를 내는) 코드는 많다. 많은 코드 중 어떤 것이 좋을까? 보통 시간이 적게 걸리는 코드가 좋다고 한다. 바로 시간 복잡도가 낮은(효율이 좋은) 코드를 작성해야 한다. CS 이론이나 코딩테스트에서 시간 복잡도를 낮추기(효율을 좋게) 위해 여러 자료구조나 알고리즘을 최적화한다. 이때 예제는 하나의 함수에 대한 입, 출력을 최적화하여 빠른 코드를 작성한다. 하지만 실무에선 단순히 하나의 입,출력만 고려하는 것이 아니다. 다양한 메서드 간 연결과 함수의 사용 정도를 고려해 설계해야 한다. 예.. 2022. 1. 20.
정확한 답이 필요하다면 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.