JAVA(247)
-
SRP(Single Responsility Principle, 단일 책임 원칙)
SRP(Single Responsility Principle, 단일 책임 원칙) 단일 책임 원칙은 어떤 원칙인가? 어떤 한 객체는 하나의 책임만을 가져야 한다는 원칙입니다. 여기서 책임이란 어떤 객체가 그 객체에 맞는 역할을 수행하기 위한 기능들을 의미합니다. 역할은 객체가 어떤 책임들을 수행할 것인지 정의한 것입니다. 제 주관적인 생각으로는 단일 책임이라는 표현보다는 단일 역할 원칙이라는 표현이 더 적절하다고 생각합니다. 즉, 한 객체는 하나의 역할만을 갖고 책임들을 수행해야 한다는 원칙이라고 생각합니다. 역할 : 객체가 역할에 맞는 책임들을 수행할 것인지 정의한 것 책임 : 역할에 맞는 기능들 예를 들면 자동차라는 객체의 주요한 역할은 운전하는 것입니다. 그렇다면 자동차 역할에 따른 책임들이 존재할 ..
2023.05.03 -
애플리케이션 logging을 위한 적절한 방법
1. 작업을 위해서 적절한 도구들을 사용하자 SLF4J를 활용하여 다음과 같이 구현할 수 있습니다. log.debug("Found {} records matching filter: '{}'", records, filter); 2. 잊지말자, 로깅 레벨(logging levels)들은 너를 위한 것이다. 1) ERROR : 요청을 처리하는 중 오류가 발생한 경우 표시됩니다. 2) WRAN : 처리 가능한 문제, 향후 시스템 에러의 원이 될 수 있는 경고성 메시지를 표시합니다. 3) INFO : 상태 변경과 같은 정보성 로그를 표시합니다. 4) DEBUG : 프로그램을 디버깅하기 위한 정보를 표시합니다. 5) TRACE : 추적 레벨은 DEBUG 레벨보다 훨씬 상세한 정보를 표시합니다. 3. 무엇을 로깅할 ..
2023.05.01 -
Logback 라이브러리 설정
설정 파일 loback의 기본 설정 파일은 logback.xml 입니다. logback 라이브러리는 classpath 아래에 위치하는 logback.xml을 기본으로 탐색합니다. xml 파일에 로그 설정 logback.xml 파일에 다음과 같이 설정할 수 있습니다. %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 기본 로그 레벨은 info 레벨로 설정됩니다. kr.codesquad.cafe 패키지의 로그 레벨은 debug 레벨로 설정됩니다. 로그 출력 방식은 콘솔(ConsoleAppender)로 설정됩니다. 로그 레벨(log level) 로그 레벨은 다음과 같습니다. TRACE < DEBUG < INFO < WARN < ERROR 1) ERROR : ..
2023.04.24 -
SLF4J 개념 및 동작과정
1. System.out.println 문제점 로그 라이브러리는 로그 레벨을 설정할 수 있기 때문에 특정 레벨 이상의 로그만 출력할 수 있지만 출력문은 레벨 상관없이 출력됩니다. 로그 라이브러리는 파일이나 외부 서버에 저장할 수 있는 반면 출력문은 이러한 기록을 파일로 기록하기 어렵습니다. 로그 라이브러리를 사용하는 것보다 출력문을 사용하면 성능 저하가 발생할 수 있습니다. 개발 중에 추가한 출력문을 주석 처리하거나 제거해야 할 수 있습니다. 2. Logging 라이브러리 로깅 라이브러리는 애플리케이션에서 발생하는 이벤트를 기록하고 추적할 수 있는 도구입니다. 로깅 라이브러리를 활용하여 디버깅 메시지를 레벨로 구분할 수 있으며, 레벨에 따라 로깅 메시지의 출력 유무를 결정할 수 있습니다. 대표적 로깅 라..
2023.04.23 -
다형성(Polymorphism)
다형성이란 무엇인가? 다형성은 역할과 구현이라는 개념을 분리한 기술이라고 생각합니다. 역할은 어떤 기능들을 수행할 수 있는 모음이고 실체가 존재하지 않는 개념입니다. 구현은 역할안에 있는 기능들을 실제로 수행하는 대상이라고 표현할 수 있습니다. 구현은 역할과는 다르게 실체를 가지고 있는 대상입니다. 즉, 정리하면 다음과 같습니다. 다형성 : 역하과 구현 개념을 분리한 기술 역할 : 어떤 기능들을 수행할 수 있는 모음 구현 : 역할안에 있는 기능들을 실제로 수행하는 대상 다형성 비유 다형성을 비유하면 자동차로 비유할 수 있습니다. 운전자가 자동차를 운전할 때 소나타를 운전하다가 아반떼로 바꾸어 운전해도 큰 어려움이 없습니다. 왜냐하면 자동차의 기능인 엑셀, 브레이크와 같은 표준 기능들이 소나타나 아반떼가 ..
2023.04.23 -
객체지향 언어 특징 (캡슐화, 상속, 추상화, 다형성)
목차 OOP 특징 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) OOP(Object-Oriented-Programming) 특징 캡슐화(Encapsulation) 상속(Inheritance) 추상화(Abstraction) 다형성(Polymorphism) 캡슐화(Encapsulation) 캡슐화는 외부의 접근으로부터 클래스의 자세한 정보인 필드 멤버와 메소드를 숨기는 방법입니다. 그리고 캡슐화가 적용된 클래스는 오직 public 인터페이스를 통하여 인터페이스의 메소드(메시지)를 노출합니다. 상속(Inheritance) 상속은 한 클래스가 또 다른 클래스의 필드 멤버와 메소드 기능들을 사용할 수 있도록 하는 것입니다. 자바에서 상..
2023.03.29