우리말에서와 같이, '이렇게(이 정도로) ~ 하다', '그렇(저렇)게(그/저 정도로) ~하다'의 표현을 하고자 한다면, 문장 뒤에 like this, like that을 붙이는 문장을 습관적으로 써왔다. Is it expensive like this? Was he talkative like that? 대신, 이와 같이 써보자. Is it this expensive? Was he that talkative? this나 that 뒤에 형용사가 쓰이면, "이렇게 ~하다", "저렇게 ~하다"의 뜻을 지닌다. 추가적으로, this + 형용사는 '현재'의 의미를, that + 형용사는 '과거'의 의미를 나타낸다.
JUnit에서 작성한 어떤 테스트케이스가 Exception을 던지고, 그 Exception이 던져진 것이 맞는 상황임을 검증하고자 한다면, JUnit3에서는 public void testDivideByZeroV3() { try { int a = 3/0; } catch(Exception e) { assertSame(e.getClass(), ArithmeticException.class); } } 반면, JUnit4에서는 @Test(expected=ArithmeticException.class) public void testDivideByZeroV4() { int a = 3/0; } 예외 처리만으로도 JUnit4가 JUnit3보다 간략하다는 것을 확인할 수 있다.
의문문을 강조하는 여러 가지 방법 중, 다음과 같은 표현을 우리말로도 일상생활에서 많이 쓰고 있다. "내가 운이 좋은 게 아니면 뭐겠어?" "나 천재 아냐?" "이거 정말 싼 거 아냐?" 등의 뉘앙스를 가진 의문문을 지금까지 tag question (부가 의문문)만 써왔다면, "의문문 + or what?"을 써서 쉽게 만들어 보자. 즉, I am lucky, aren't I? It is cheap, isnt' it? 와 같은 문장을 Am I lucky or what? Is it cheap or what? 로도 써 보자.
"우리나라 정서상 어렵다, 현실에 맞지 않다"는 말들을 하기도 하고, 듣기도 한다. Rod Johson이 그의 저서 "Expert one-on-one J2EE Design and Development"에서 XP 기법을 소개하면서, 그 기법의 모든 것을 따르지는 않더라도 테스트 지향 개발 방법은 바람직하다고 하였다. 테스트에 대한 XP의 기법은, 코드를 작성하기 전에 먼저 테스트 코드를 작성하자 모든 코드는 단위 테스트 코드를 가져야 하고, 각 단위 테스트는 자동으로 실행될 수 있어야 한다. 버그가 발견되면 버그를 고치기에 앞서, 버그를 다시 재현해 내는 테스트 케이스를 정의한 후에 고쳐야 한다. 테스트 코드를 먼저 작성하는 것이 더 유용하다는 관점에 대해서는, 테스트 문서는 스펙 문서에 근거할 뿐만 아니..
why와 how come은 둘 다, "왜~?"라는 문장을 구성한다. 그러나, 그 뒤의 문장 순서가 다르다는 차이가 있다. why로 시작하는 의문문은 우리가 알고 있는 의문문의 형태이다. 그러나, how come은 평서문의 순서를 취한다. "왜 전화 안 했어?" Why didn't you phone me? How come you didn't phone me? "왜 일찍 일어나지 않았어?" Why didn't you get up early? How come you didn't get up early?
'일련의'를 영어로 하면? 일련의 뜻 다음 사전에서 '일련'을 찾아보면 아래와 같은 의미가 있다. 일정한 연관을 가지고 하나로 이어짐 한자어로 [一連] 이라고, 많이 쓰는데 영어에도 이런 표현이 있다. string이 프로그램에서는 문자열이지만, 원 단어 뜻에는 "줄"이라는 뜻이 있고, 이를 이용하여 a string of ~ 라고 하면 , "일련의 ~" 라는 뜻이 된다. a string of ~ 라고 하면, ~에 해당하는 것이 마치 줄줄이 꿴 듯한 것을 떠올리자. 유사한 표현으로, a series of / a chain of / a train of / a succession of (다음 사전 참조) 등이 있다. Examples a string of data ~ a string ..
"~하는 것은 불가능하다", "~할 수 없다"라는 뜻이다. ~하는 것은 불가능하다, ~할 수 없다라는 말을 영작할 때, 습관적으로 It is impossible to ~, S cannot ~ 라고 했다면, there is no ~ ing라고도 써보자. 내일 전화영어에는 꼭 써보리라. -_-+ There is no singing in the library. 도서관에서 노래 부를 수 없다. There is no asking how old she is. 그녀 나이를 물어볼 수 없다. 익숙해지자.
"내가 작성한 코드는 잘 작성한 것일까?" 내가 작성한 코드가 이상없이 동작하는지 검사하기 위해, JUnit 등을 사용하여 테스트를 수행해 왔다면, 이제 이런 질문을 던져볼 만도 하다. 프로그래머가 작성한 코드는 "논리"의 집합이다. 그렇다면, 테스트케이스는 "그 논리가 적합한가?" 혹은 "그 논리에 헛점이 있는가?"를 검증하기 위한 것이라고 할 수 있을 것이다. 그러면, 그 "논리를 세우는 방법이 잘 되어 있는가?"를 검증하는 방법도 있을 법하다. 그래서, "코드검사"를 수행한다!! 코드 검사는 내가 작성하는 코드가 표준에 맞는지, 어떤 잠재적인 오류 패턴을 내포하고 있는지 등을 검사해 준다. CheckStyle, PMD, FindBugs 등 여러 가지가 있으나, FindBugs를 hudson에 연동하..
사실, 개발하면서 주석을 다는 것은 무척이나 흥미로운 귀찮은 일이다. 게다가 포맷을 지키고, 어떤 파라미터가 넘겨지고, 리턴 값은 어떻고, 어떤 상황에서 어떤 exception이 던져진다는 것까지 써야 한다면 더더욱 그렇다. 보통 프로그램부터 작성한 후, 주석을 달라고 한다면, 주석을 다는 것이 아주 하기 싫은 일이 될 가능성이 크다고 생각한다. 주석을 달면서, 코드 리뷰도 하고, 분석도 하고, 수정도 하는 선순환이 되기 보다는 상당히 형식적인 주석 작업이 될 확률이 더 높아진다. 오히려, 보다 양질의 주석을 달기에 좋은 시기는 해당 부분을 프로그램화 할 때라고 생각한다. 모든 프로젝트를 완료한 후, javadoc을 사용하는 대신에 초기부터 javadoc을 사용해 보자. 자신이 작성하는 코드와 비슷한 시..
지난 글에 설정한 바대로 ant task를 정상적으로 진행했다면, ant task로 emma.report 태스크를 수행했을 때, coverage.html과 coverage.xml이 생성되었을 것이다. 참고로, 생성된 coverage.html을 살펴보자. 해당 패키지의 구성중, 클래스/메소드/블럭/라인 기준으로 어느 정도가 test로 커버 되고 있는지를 보여준다. 패키지 이름을 클릭하면, 패키지에 포함된 클래스들이 나타나고, 이 클래스들이 어느 정도 test로 커버되고 있는지 보여준다. 이 중, 아무 클래스나 또 클릭하게 되면, 클래스내의 메소드들이 test로 어떻게 커버되고 있는지 현황을 자세하게 보여주게 된다. 이 결과물은, 별도의 ant task를 수동으로 실행시켜 얻은 결과물이므로, 이제 hudso..
more of A than B 라고 하면, "B라기 보다는 오히려/차라리 A", "B보다는 A에 가깝다"라는 뜻이다. amazon.com에서 안드로이드 책을 검색하는데, 리뷰 중에 다음과 같은 리뷰 제목이 있었다. "More of an instruction manual than a book." 즉, "책이라기보다는 지침 설명서"라는 리뷰 내용이다. (물론, 좋은 별점을 받았을 리는 없다.)
Syntax Highlighter로 괄호를 인용할 때, 예를 들어 와 같이 인용하고자 한다면, 막상 인용해보면 위와 같이 표시되는 대신 과 같이 표시되고 만다. 게다가 nested expression이라면, 본인의 의도와는 다른 문서 구조로 표현되어 원치 않는 output을 만나게 될 것이다. 이럴 경우, 다음의 사이트를 사용하여 손쉽게 escape 시키자. Syntax Highlight 시킬 부분에 변환 코드를 복사해 넣으면 될 것이다. http://accessify.com/tools-and-wizards/developer-tools/quick-escape/default.php