Java 42

시멘틱 버저닝

java 개발을 하다보면 각각의 버전이 존재한다. 크게 메이저 버전만 확인 하였지만 이번 계기로 개념들에 대해 찾아봤다.예를 들어서 spring 버전이 3.2.4 이런식으로 등록이 되어 있다. 이러한 버전관리를 통해서 어떤 범위내에서 호환이 되고 기능 추가버그 수정 등등 주석으로 이해 하였다. 개념들을 살펴보니, 각각 비즈니스 개발을 하고 배포 할때 이렇게 사용하면 좋을꺼 같다.  시멘틱 버저닝 형식시멘틱 버저닝은 MAJOR.MINOR.PATCH 형식으로 버전 번호를 부여합니다. 1.4.2 메이저 버전해당 라이브러리나 기능에 큰 기능이나 변화를 의미 한다. 호환되지 않는 변경 사항이 있을 때 증가합니다. 예를 들어, API의 큰 변경이나 기존 기능이 호환되지 않도록 변경된 경우입니다. 실무에선 매이저 변..

Java 2024.10.18

상속보다 컴포지션(조합)을 사용하라

상속보단 컴포지션을 사용하라 라는 멘토님의 질문을 듣고 인터넷에 이것저것 찾아봤다.그중에 가장 이해가 잘되는 블로그 를 보고 작성할 예정이다. 해당 내용은 Effective Java 에 Item 18에 나오는 내용이다. 언제 상속을 사용할까?상속은 "is-a" 관계를 표현할 때 유용하다.즉 "A는 B다" (개는 동물이다)처럼, 객체들이 완전히 같은 범주에 있을 때 사용이 가능하다. 아니면 확장 목적으로 설계되거나 동일한 프로그래머가 개발할때 등등 이유가 있다.   상속을 할떄 캡슐화가 꺠지는 경우 class Animal { public void makeSound() { System.out.println("Animal is making a sound."); }}class Dog ex..

Java 2024.10.17

오버라이딩의 응용

오버 라이딩이란? 상속 받은 메소드를 재정의 하는 것입니다. 오버라이딩을 하면 코드의 재사용성과 확장성이 높아집니다. 오버 라이딩 예시 class Animal { public void makeSound() { System.out.println("Animal sound"); }}class Dog extends Animal { @Override public void makeSound() { System.out.println("Bark"); }} 위 코드에서 Dog 클래스는 Animal 클래스를 상속받아 makeSound 메소드를 재정의했습니다. 이를 통해 Dog 클래스는 자신에게 맞는 소리를 낼 수 있습니다.   응용하기 class Parent { p..

Java 2024.10.16

테스트 코드 커버리지

테스트 커버리지 테스트 커버리지란 시스템 및 소프트웨어에 대해 충분히 테스트가 되었는지를 나타낸 정도이다. 수행한 테스트가 얼마나 테스트 대상을 커버 했는지 나타낸다.  코드 커버리지 기준 1. 라인 커버리지 (Line Coverage)코드가 한줄이 한번 이상 실행이 충족이 되어야 됩니다. public class Main { public static void foo(int a) { System.out.println("--function starts--"); // 1번 if (a > 0) { // 2번 a /= 2; // 3번 } System.out.println("--function ends--"); // 4번 } ..

Java 2024.10.16

자바 default 접근 제어자

사진과 같이 private과 protected 사이에 default 접근 제어자가 존재한다.  공통점:두 접근 제어자 모두 같은 패키지 내에서만 접근이 가능합니다.차이점:default: 같은 패키지 내에서만 접근이 가능합니다. 상속 관계여도 다른 패키지에서 접근할 수 없습니다.protected: 같은 패키지 내에서 접근이 가능한 것은 물론, 다른 패키지의 하위 클래스에서도 접근이 가능합니다. 즉, 상속받은 클래스가 다른 패키지에 있어도 protected로 선언된 멤버에 접근할 수 있습니다.  package com.example.animals;class Animal { // default 접근 제어자 메소드 void makeSound() { System.out.println("Ani..

Java 2024.10.16

컴파일 타임과 런타임의 차이

컴파일(Compile)이란?  개발자가 작성한 소스 코드를 프로세서가 이해할 수 있는 기계어로 번환하는 작업  런타임(Runtime)이란? 컴파일 과정을 마친 컴퓨터 프로그램이 실행되고 있는 환경 또는 동작되는 동안의 시간을 말한다. 예를 들어, JavaScript가 Web Browser에서 실행된다면 런타임 환경은 Web Browser가 되고 JavaScript가 Node.js에서 동작한다면 런타임 환경은 Node.js이 된다.   컴파일 에러컴파일 에러는 프로그램이 컴파일링되는 과정에서 발생하는 에러로 일반적으로 컴파일 에러 발생시 컴파일러는 문제를 일으킨 소스코드라인을 지적해준다.Syntax ErrorType 체크 에러파일 참조 오류런타임 에러소스코드가 이미 실행가능한 프로그램으로 성공적으로 컴파일..

Java 2024.10.10

자바 변수 네이밍 컨벤션

1. 클래스(Class)PascalCase를 사용합니다. 즉, 각 단어의 첫 글자를 대문자로 작성합니다.예: CustomerService, OrderRepository, ProductController2. 메소드(Method)camelCase를 사용합니다. 메소드명은 동사로 시작하는 것이 권장되며, 첫 단어는 소문자로 시작하고 이후 단어의 첫 글자는 대문자로 씁니다.예: findCustomerById, saveOrder, calculateTotalAmount3. 변수(Variable)camelCase를 사용합니다. 변수명은 직관적이어야 하며, 무엇을 저장하는지 명확하게 알 수 있어야 합니다.예: customerName, orderAmount, itemList4. 상수(Constant)UPPER_SNAKE..

Java 2024.10.10

코딩 컨벤션

코딩 컨벤션 이란? 코딩 컨벤션은 코드 작성 시 일관성 있고 가독성 높은 코드를 작성하기 위한 일종의 규칙 또는 스타일 가이드입니다. 이는 개발자들이 협업할 때 코드의 가독성을 높이고, 유지보수 비용을 줄이기 위해 중요한 역할을 합니다   코딩 컨벤션은 전체 코드 작성 시 지켜야 하는 일반적인 스타일 가이드입니다.이는 들여쓰기 방식, 주석 작성 규칙, 코드 블록의 구조, 세미콜론 사용 여부, 괄호 배치와 같은 전반적인 코드 스타일을 포함합니다.언어에 따라 다르며, 협업에서 코드의 일관성과 가독성을 유지하기 위해 사용됩니다.  주요 컨벤션 요소 :1. 네이밍 규칙  camelCase: 변수나 함수명에 주로 사용되며, 첫 단어는 소문자, 이후 단어는 대문자로 시작합니다. 예: myVariable.Pascal..

Java 2024.10.10

[java] Integer 캐싱

결론부터 말씀드리면 Integer 에 캐싱되는건 min 값이 -128 이고 max값은 127이다.     아래와 같이 테스트를 하였다. 결과는 다음과 같다.    127번 까진 각각 맞지만, 128번부터 인스턴스의 주소가 변경이 되어서 false가 나온다. 그에 따른 동시성 이슈때문에 찾아봤지만, 불변이기 때문에 동시성 이슈는 발생하지 않는다.  참조 : https://www.baeldung.com/java-compare-long-values

Java 2024.10.06