✔ 이항 연산자들 이항 연산자? 피연산자가 둘인 연산자 자바에서 제공하는 모든 연산자들 하나의 식 안에 둘 이상의 연산자가 존재하는 경우에는 우선 순위와 결합 방향(연산 방향)이 연산 진행 순서를 결정 자바에서 제공하는 이항 연산자들 대입 연산자와 산술 연산자 =, +, -, *, /, % 복합 대입 연산자 +=, -=, *=, /= ,%=, &=, ^=, >= 복합 대입 연산자는 자동 형 변환을 자동으로 해주므로 컴파일 오류가 발생하지 않음 관계 연산자 (비교 연산자) , =, ==, != 관계 연산자는 자동 형 변환을 자동으로 해주므로 컴파일 오류가 발생하지 않음 논리 연산자 && (논리 곱, AND), || (논리 합, OR), ! (논리 부정, NOT) Short-Circuit Evaluation..
✔ 상수 상수란? 값이 변하지 않는 수 자바에서는 한번 그 값이 정해지면 이후로는 변경이 불가능한 변수도 상수라고 함 변수를 선언할 때 그 앞에 final이라는 선언을 추가하면 그 변수는 상수가 됨 final int MAX_SIZE = 100; 자바의 상수 이름 짓는 방법 모두 대문자로 지음 이름이 둘 이상의 단어로 이뤄질 경우 단어 사이에 언더바를 넣음 리터럴? 자바 컴파일러는 숫자를 접했을 때 이를 무엇으로 인식할지에 대한 일종의 약속이 필요 약속에 근거하여 표현된 숫자를 가리켜 리터럴 또는 리터럴 상수라 함 자바 컴파일러는 정수형 상수를 int형 정수로 인식하도록 약속되어 있음 하지만 자바는 byte형과 short형 정수의 표현 방법을 제공하지 않기 때문에 단지 숫자로 초기화를 허용함 반면 long..
✔ 변수의 이해와 활용 변수란? 데이터의 저장과 참조를 위해 할당된 메모리 공간에 붙인 이름 변수를 선언하면 메모리 공간이 할당되고, 그 할당된 메모리 공간에 이름이 붙게 되어 이를 통해 접근 변수 선언 int num; // int : 정수를 저장할 메모리 공간을 할당하겠다는 용도를 결정하는 선언 // num : 메모리 공간에 붙일 이름 변수를 선언하는 방법으로는 변수를 선언하고 값의 저장과 참조를 진행 변수를 선언하면서 동시에 값을 저장 // 1. int num1; num1 = 10; // 2. int num2 = 20; 자료형의 종류와 구분 변수의 자료형을 결정한다는 것은 해당 변수에 값을 저장하고 참조하는 방식을 결정한다는 의미 정수를 저장하는 용도로 변수를 선언하면 정수만 저장할 수 있어 실수를 ..
주석 코드를 읽으면서 나쁜 냄새와 기교 및 휴리스틱를 정리해보자. 1) 부적절한 정보 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이므로 일반적으로 작성자, 최종 수정일, SPR 번호 등과 같은 메타 정보만 넣는다. 2) 쓸모 없는 주석 오래된 주석, 엉뚱한 주석, 잘못된 주석은 더 이상 쓸모가 없다. 쓸모 없어진 주석은 재빨리 삭제하는 편이 가장 좋다. 3) 중복된 주석 코드만으로 충분한데 구구절절 설명하는 주석인 중복된 주석은 필요 없다. 주석은 코드만으로 다하지 못하는 설명을 부언한다. 4) 성의 없는 주석 주석을 달 참이라면 시간을 들여 최대한 멋지게 작성한다. 단어를 신중하게 선택하고 문법과 구두점을 올바로 사용한다. 주절대지 않는다. 당연한 소리를 반복하지 않는다. 간결하고 명료하게 작성..
첫째, 돌려보자 분석은 검토, 그 이상도 그 이하도 아니다. 우리 모두가 편안하게 여겨야 할 활동이며 남이 내게 해준다면 감사히 반겨야 할 활동이다. 비판이 있어야 발전도 가능하다. 날짜를 표현하는 자바 클래스인 SerialDate를 비판해보자. SerialDate는 SerialDateTests라는 단위 테스트 케이스를 몇 개 포함하고 있는 클래스를 가진다. 하지만 모든 경우를 점검하지 않으므로 클래스를 철저히 이해하고 리팩터링하려면 훨씬 높은 테스트 커버리지가 필요하다. 그리고 경계 조건 오류, 항상 거짓인 if문과 같은 버그들을 수정한다. 변경한 SerialDate가 모든 테스트 케이스를 통과한다면 SerialDate 코드가 제대로 돈다고 믿는다. 이후 SerialDate 코드를 '올바로' 고쳐보자...
JUnit 프레임워크 JUnit은 자바 테스트 프레임워크 중에서 가장 유명하다. JUnit에서 문자열 비교 오류를 파악하기 위해 두 문자열을 받아 차이를 반환하는 모듈인 ComparisonCompactor와 테스트를 살펴보며 모듈에 필요한 기능을 알아보고, 테스트 구조 분석 및 코드를 평가해보자. // ComparisonCompactor.java public class ComparisonCompactor { private static final String ELLIPSIS = "..."; private static final String DELTA_END = "]"; private static final String DELTA_START = "["; private int fContextLength; pr..