본문 바로가기

전체 글

(92)
[자바 코딩의 기술] 5장 : 문제 발생에 대비하기 5.1 빠른 실패 문제 코드 class CruiseControl { static final double SPEED_OF_LIGHT_KMH = 1079252850; static final double SPEED_LIMIT = SPEED_OF_LIGHT_KMH; private double targetSpeedKmh; void setTargetSpeedKmh(double speedKmh) { if (speedKmh < 0) { throw new IllegalArgumentException(); } else if (speedKmh 가장 구체적인 예외를 잡자!! 만약 여러 개의 예외를 똑같은 방법으로 처리한다면 다중 캐치 방식을 사용하자. ex) catch(NumberFormatException | IOExcep..
[자바 코딩의 기술] 4장 : 올바르게 명명하기 프로그래밍에서 이름을 올바르게 짓는 것은 중요하다. 하지만 패키지, 클래스, 메서드, 필드, 매개변수, 지역 변수 등 명명할 요소가 너무 많기 때문에 모든 요소에 좋은 이름을 짓는 것은 어렵다. 4장에서는 코드 요소에 걸맞는 이름을 할당하는 방법에 대해서 배운다. 명명할 땐 자바 규칙이 중요하며, 메서드 명명은 간결해야만 하며 의미없거나 한 글자짜리 이름은 피해야만 한다. 4.1 자바 명명 규칙 사용하기 아래 코드는 어떤 문제가 있을까..? class Rover { static final double WalkingSpeed = 3; final String SerialNumber; double MilesPerHour; Rover(String NewSerialNumber) { SerialNumber = Ne..
[자바 코딩의 기술] 3장 : 슬기롭게 주석 사용하기 3.1 지나치게 많은 주석 없애기 아무런 의미없는 주석은 없앤다. 대신 코드만 보아서는 드러나지 않는 정보를 "주석"으로 표시하자. 3.2 주석 처리된 코드 제거 주석 처리된 코드는 일반적인 주석과 달리 명확히 설명히 없다. 이는 코드에 혼란만 가중시키는 쓰레기를 끼얹는 것과 같다. 어차피 주석 처리된 코드를 다시 찾을 일은 없다. 제거하자. 3.3 주석을 상수로 대체 2장에서 보았던 "매직넘버" 사용 시 각 넘버에 의미에 대한 주석을 달아놓는 것은 나쁘지 않은 방법이다. 하지만 우리는 "상수"를 사용함으로써 주석없이 코드만으로 주석을 대체할 수 있다. 주석을 "상수, 변수, 필드, 메서드 이름"으로 대체할 수 있다면 바로 시도하자! 3.4 주석을 유틸리티 메서드로 대체 // round to intege..
[1주에1번자문자답] 병행 제어, 쿠키+세션, 쓰레드에 대한 질문 ✋🏻 관계형 데이터베이스란? 키와 값을 관계로 묶어 테이블 형태로 저장하는 데이터베이스입니다. 데이터 항목은 각 항에 저장되며 속성은 열에 표현됩니다. 관계형 데이터베이스에서 "관계"란 각 테이블의 행과 행이 연결되는 관계를 맺을 수 있기 때문입니다. 이러한 관계를 통해 한 테이블에 중복 값들에 의해 발생되는 "이상현상"(삽입 갱신, 삭제 이상)을 없앨 수 있습니다. ✋🏻 관계형 데이터베이스의 장점은 무엇이 있나요? 데이터의 정렬, 탐색, 분류가 NoSql계열에 비해 빠릅니다. 또한 데이터의 무결성과 일관성을 보장합니다. 정규화를 통해 중복을 줄일 수 있습니다. ✋🏻 병행 제어를 사용하는 이유는 무엇인가요? 동시에 여러 개의 트랜잭션이 병행 수행할 때 데이터베이스의 일관성을 파괴하지 않도록 트랜잭션 간의..
[자바 코딩의 기술] 2장 : 코드 스타일 레벨업 2.1 매직 넘버를 상수로 대체 void setPreset(int speedPreset) { if (speedPreset == 2) { setTargetSpeedKmh(16944); } else if (speedPreset == 1) { setTargetSpeedKmh(7667); } else if (speedPreset == 0) { setTargetSpeedKmh(0); } } void setTargetSpeedKmh(double speed) { targetSpeedKmh = speed; } 위 코드 조각처럼 아무런 의미없는 숫자가 프로그램을 동작을 제어한다면 "매직 넘버"라고 부른다. 이러한 매직넘버의 사용은 정확한 뜻이 정해져있지 않기 때문에 오류가 발생하기 쉬우며 사용자가 메서드 내부에 대한 지..
[구현, 시뮬레이션] 20061 : 모노미노도미노 2 python 📄 20061 : 모노미노도미노 2 📄 www.acmicpc.net/problem/20061 20061번: 모노미노도미노 2 모노미노도미노는 아래와 같이 생긴 보드에서 진행되는 게임이다. 보드는 빨간색 보드, 파란색 보드, 초록색 보드가 그림과 같이 붙어있는 형태이다. 게임에서 사용하는 좌표 (x, y)에서 x는 행, www.acmicpc.net 🤔 문제 풀이 🤔 "구현"과 "시뮬레이션"을 푸는 방법은 자신감인 것 같다. 문제 조건이 굉장히 복잡하고 구현하자니 귀찮은 부분들이 많이 보이기 때문에 문제 풀이를 하기 싫어지게 된다. 하지만 이런 구현 문제를 많이 풀다보면 구현에 대해 두려움이 사라져서 여러가지 시도를 쉽게 해볼 수 있는 것 같다. 이 문제에서 어려웠던 점은 fill_block()함수에서는 '..
[자바 코딩의 기술] 1장 : 우선 정리부터 1.1 불필요한 비교 피하기 microscope.isInorganic(sample) 이 Bool을 반환한다면 불필요하게 True, False로 비교해서 조건문을 체크하지 말고 간단하게 없애자. if(microscope.isInorganic(sample) == true) if(microscope.isInorganic(sample) == false) 보단 if(microscope.isInorganic(sample)) if(!microscope.isInorganic(sample)) 를 사용하자. 1.2 부정 피하기 1. 메서드가 반환 값으로 False(부정)을 반환하게 되면 한번 더 생각하며 이해해야 한다. 2. 반환 값이 긍정인 것을 굳이 `!`을 이용해서 부정으로 바꾸면 한번 더 생각하며 이해해야 한다. ..
[JAVA] Classpath : 클래스패스 클래스패스 클래스를 찾는 기준 경로 자바의 어플리케이션이 실행될 때에 여러 클래스들이 사용되는데, 이 때 필요한 클래스들을 계속 찾는다. java파일을 컴파일 하면 관련된 클래스에 대한 클래스파일과 ClassPath가 나오게 된다. 이 때 생성된 class파일을 다른 폴더에 옮기고 Classpath를 실행하면 클래스를 찾지못해서 `ClassNotFoundException`이 발생하게 된다. 따라서 `-classpath` 옵션으로 기준 경로를 알려주던지 환경변수에 class path를 추가해줘야만 한다.

반응형