목록분류 전체보기 (181)
초보개발자 긍.응.성
Groovy Script Structure nGrinder 3.2부터 스크립트 언어로써 Groovy를 지원하기 시작했습니다. Groovy 스크립트는 JUnit에 기반하여 동작합니다. Groovy로 작성한 스크립트 예 import static net.grinder.script.Grinder.grinder import static org.junit.Assert.* import static org.hamcrest.Matchers.* import net.grinder.plugin.http.HTTPRequest import net.grinder.script.GTest import net.grinder.script.Grinder import net.grinder.scriptengine.groovy.junit.Gri..
매개변수가 유효한지 검사하라 메서드와 생성자 대부분은 입력 매개변수의 값이 특정 조건을 만족하기를 바란다. 메서드 몸체가 실행되기 전에 매개변수를 확인한다면 잘못된 값이 넘어왔을 때 즉각적이고 깔끔한 방식으로 예외를 던질 수 있다. public과 protected 메서드는 매개변수 값이 잘못됐을 때 던지는 예외를 문서화해야 한다. 자바 7에 추가된 java.utils.Objects.requireNonNull 메서드는 유연하고 사용하기도 편하니, 더 이상 null 검사를 수동으로 하지 않아도 된다. this.strategy = Objects.requireNonNull(strategy, "전략"); 단언문(assert)를 사용해 매개변수 유효성을 검증할 수 있다. private static void sort..
익명 클래스보다는 람다를 사용하라 익명 클래스 방식은 너무 코드가 길다. 단 하나의 추상 메서드를 갖는 함수형 인터페이스는 람다식으로 표현하자. 람다식의 경우 타입을 명시해야 코드가 더 명확할 때만 제외하고는, 람다의 모든 매개변수 타입은 생략하자. 익명 클래스는 함수형 인터페이스가 아닌 타입의 인스턴스를 만들 때만 사용하라 대신 람다는 이름이 없고 문서화도 못한다. 따라서 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄 수가 많아지면 람다를 쓰지 말아야 한다. 람다보다는 메서드 참조를 사용하라 람다가 익명 클래스보다 나은 점 중에서 가장 큰 특징은 간결함이다. 하지만 더 간결한 방법은 메서드 참조이다. 미리 정의된 메서드 참조를 사용해도 되고, 람다로 작성할 코드를 메서드에 담은 다음 람다 대신 그..
열거 타입 (Enum type) 자바 언어의 열거 타입 (enum type)은 Java 1.5 부터 등장하였다. 이전까지는 상수 선언 시 static final을 붙여 사용했었다. 정수 열거 패턴 혹은 문자열 열거 패턴은 타입 안전을 보장할 수 있는 방법이 없으며 표현력도 좋지 않다. 상수의 값이 바뀌면 클라이언트도 반드시 다시 컴파일해야 한다. 디버깅 시에도 의미를 파악하기 힘들며 상수의 개수가 몇개가 존재하는지도 알 수 없다. 열거 타입은 클래스이며 상수 하나당 자신의 인스턴스를 하나씩 만들어 public static final 필드로 공개한다. 그렇기에 열거 타입 선언으로 만들어진 인스턴스들은 딱 하나씩만 존재하며 불변이다. 클래스이기에 타입 인전성을 제공한다. 열거 타입에는 각자의 이름공간(Nam..
nGrinder nGrinder는 NCP(과거 NBP)와 NHN에서 공동으로 개발 중인 부하 테스트 플랫폼이다. 테스트 스크립트를 만들고, 테스트를 실행하고, 대상 서버 모니터링하며 결과를 동시에 생성할 수 있다. 내부적으로는 테스트 성능 테스트 툴인 Grinder를 사용한다. naver/ngrinder enterprise level performance testing solution. Contribute to naver/ngrinder development by creating an account on GitHub. github.com 아키텍처 nGrinder는 jython(JVM에서 동작하는 python) 또는 Groovy(3.2 버전 이후로 지원)로 작성된 스크립트를 통해 여러 대의 장비에 테스트를..
제네릭이 자바 8 이후부터등장했다. 제네릭 등장 이전에는 로 타입을 이용하였으며 이는 타입 안전하지 못했다. 특징 제네릭은 컴파일 타임에 타입에 대하여 체크를 한다. 또한 컴파일 타임에 타입에 대한 검증하기에 런타임에는 타입이 소거된다. 제네릭 클래스와 제네릭 메서드 제네릭을 사용한다면 타입에 사용할 여러 타입에 대하여 별도의 클래스 또는 메서드를 만들어 줄 필요 없다. 제네릭 클래스 또는 제네릭 메서드를 이용하여 한번에 처리할 수 있기 때문이다. 비검사 경고 제네릭을 사용하기 시작하면 수많은 unchecked 경고를 볼 수 있다. 사용한 제네릭에 타입 안전성이 보장되지 않다면 이러한 경고들이 발생한다. 될 수 있는 한 모든 unchecked 경고를 없애자. 없앨 수 없지만 타입 안전하다 확신할 수 있다..