본문 바로가기

Java3

상수 값 추출에 대하여 클린 코딩에 관심이 있는 개발자라면 모두 다음의 문장을 읽어본 적이 있을 것 같습니다. "매직 넘버, 매직 스트링을 상수로 선언하라." 상수 추출을 하는 이유 코드의 역할이 무엇인가? 그렇다면, 왜 매직 넘버, 매직 스트링을 지양하고 해당 값을 상수로 선언해야 하는 것일까요? 아래의 코드로 그 이유를 한번 살펴봅시다! private void validateNumberRange(int number) { if (number 45) { throw new IllegalArgumentException(); } } 해당 코드의 역할이 무엇인지 짐작이 가나요? "숫자가 1 ~ 45 사이의 값인지를 검증해 주는 코드입니다." 라고 한다면, 그건 프로그램을 조금이라도 다뤄 봤던 사람이라면 모.. 2023. 12. 3.
[Java / enum] - 왜 enum이 상수 클래스보다 더 좋은건데?? 서론 안녕하세요, 우테코 6기 백엔드 지원자 Zangsu 입니다! 우선, 글을 작성하기 전 미리 말씀 드리자면, 저는 대부분의 상수를 별도의 클래스를 생성해 관리하고 있었는데요. 그 이유는 다음과 같습니다. 1. 열거형은 하나의 논리적인 그룹에 포함되는 값들을 열거하기 위해 사용해야 한다. 모든 상수를 하나의 'enum'에 몰아 둔다면, 서로 관심사가 어중간하게 다른 값들이 하나의 "열거형" 이라는 그룹에 위치하게 되는데, 이는 올바른 책임 분리라고 생각하지 않았습니다. 2. 'enum'을 사용하게 되면 상수 클래스에 비해 값을 가지고 오는 코드가 길어진다. 이건 정말 사소한 취향인데요. 상수 클래스를 사용한다면 값을 가지고 오는 코드는 다음과 같을겁니다. 'ClassName.constName' 반면, .. 2023. 11. 15.
[오개념 정리] Upcasting 다음과 같은 클래스 Parent, Child가 존재한다고 가정 해 봅시다. public class Parent { int a; } public class Child extends Parent{ int b; } 즉, Child 클래스는 Parent 클래스를 부모 클래스로 상속 받습니다. 이후 다음 코드를 실행 해 봅니다. public class Main { public static void main(String[] args) { Parent upcasting = new Child(); System.out.println("upcasting class = " + upcasting.getClass()); } } 위 코드의 결과 값은 무엇이 나올까요? 정답은 upcasting class = class Child .. 2023. 5. 20.