본문 바로가기

전체 글120

[210926] 백준 10814번 문제 풀이 / 나이순 정렬 문제의 핵心 1. 나이, 이름의 정보를 입력받은 뒤에 나이를 기준으로 정렬한다. 2. 카운팅 정렬을 활용하여 빠르게 정렬한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Q1_10814 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); in.. 2021. 9. 26.
[클린코드 완독하기] Chapter 07 오류 처리 Chapter 07. 우아하게 예외 처리하기 01 예외 처리 방식 📍 오류 코드를 리턴하지 말고, 예외를 던져라 👎 Bad public class DeviceController { ... public void sendShutDown( ) { DeviceHandle handle = getHandle(DEV1); // Check the state of the device if ( handle != DeviceHandle.INVALID ) { // Save the device status to the record field retrieveDeviceRecord(handle); // If not suspended, shut down if ( record.getStatus( ) != DEVICE_SUSPENDED.. 2021. 9. 26.
[클린코드 완독하기] Chapter 06 객체와 자료구조 Chapter 06. 객체와 자료구조로 데이터 표현하기 01 자료구조 vs 객체 자료구조 Data Structure 객체 Object 데이터 그 자체 비즈니스 로직과 과련 자료를 공개한다. 자료를 숨기고, 추상화한다. 자료를 다루는 함수만 공개한다. 변수 사이에 조회 함수와 설정 함수로 변수를 다룬다고 객체가 되지 않는다. (getter, setter) 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있다. 📍 자료구조 vs 객체 예시 (1) Vehicle '자료구조' 로 쓰일 때, public interface Vehicle { double getFuelTankCapacityInGallons( ); // 연료 탱크 용량(갤런 단위) double getGallonsOfGasol.. 2021. 9. 23.
[클린코드 완독하기] Chapter 05 형식 맞추기 Chapter 05. 형식 맞추기 : 코드의 가독성에 필수적인 포맷팅 01 포맷팅이 중요한 이유 public void horriblyFormattedMethod(){ System.out.println("First line"); System.out.println("Second line"); System.out.println("Third line"); for( int i=0; i< 3; i++) System.out.println("number " + i ); } public void horriblyFormattedMethod(){ System.out.println("First line"); System.out.println("Second line"); System.out.println("Third line".. 2021. 9. 20.
[JPA] Proxy 프록시 01. Proxy 프록시가 필요한 상황 📍 Member 객체를 조회할 때 속해져있는 Team 도 같이 조회해야할까? public void printUserAndTeam(String memberId) { Member member = entityManager.find(Member.class, memberId); Team team = member.getTeam(); System.out.println("회원 이름" + member.getUserName()); System.out.println("소속팀" + team.getName()); } Team은 어쩌다 한 번 필요해서 회원을 조회할 때 마다 매번 같이 조회하는 것은 낭비인 상황이다. 이런 경우 보통 Member 클래스의 Team 필드에 아래와 같은 어노테이.. 2021. 9. 18.
[클린코드 완독하기] Chapter 04 주석 Chapter 04. 코드를 보조하는 주석 01 주석은 최대한 쓰지 말자 // 직원에게 복지 혜택을 받을 자격이 있는지 검사한다. if ((employee.flags & HOURLY_FLAG) && employee.age > 65 )) // 의미있는 이름을 지으면 해결된다. if (employee.isEligibleForFullBenefits( )) 주석은 나쁜 코드를 보완하지 못한다. 코드에 주석을 추가하는 일반적인 이유틑 코드 품질이 나쁘기 때문이다. 자신이 저지른 난장판을 주석으로 설명하지 말고 개선하는데 시간을 보내야한다. 의도를 정확히 표현할 수 있는 코드를 작성하면 주석이 필요없다. 코드의 변화에 따라가지 못하고, 주석은 방치된다. 복지혜택에 연금 혜택 기준이 추가된다면, 주석에 저절로 그 변.. 2021. 9. 18.