지운's 개발일기
기술 경력 블로그
-
JavaScript test framework
이전까지 node js 에서 테스트 프레임웤은 Mocha 를 이용해왔는데 지금 읽고 있는 책(Javascript design pattern)에서는 Jasmine 을 이용한 테스트 케이스 작성을 설명하고 있어서 이에 대한 공부를 진행하려 한다. Mocha 는 TDD(Test Driven Development) 에 필요한 API 들을 제공하는데 assertion 등은 외부라이브러리를 사용해야한다(BDD 스타일의 인터페이스도 지원한다). Jasmine 은 BDD(Behavior Driven Development)...
-
Java Refactoring Tease Apart Inheritance
상속은 더 적은 코드를 가지고 기존보다 많은 기능, 다양한 기능을 구현하는데 좋은 도구이다. 하지만 모든 코드를 계층 구조를 만들면 각각의 클래스는 실제 하는일이 없어진다던가 하여 하는 역할이 모호해질 수 있다. 그러면 아래와 같은 문제가 발생한다. 클래스 계층의 어디에 새 기능을 넣어야 할 지 알기 어려움 이용하고 싶은 코드가 (부모가 아닌)형제...
-
Java Refactoring Hide Delegation
앞에서는 Inheritance 를 Delegaation 으로 치환하는 것에 대해 알아보았다. 잘못된 IS-A 에서 HAS-A 관계로 변경은 어찌보면 당연하다. 하지만 무엇이든 과하면 안좋은 것으로 이러한 위임된 필드들로 인해 문제가 생길 수 있는데 우리가 앞에서 IS-A 를 HAS-A 로 변경할 수 있었던 이유가 무엇일까 생각해보면 우리는 Random 클래스가 해당 기능을 하는 객체이며 내부에서...
-
Java Refactoring Replace Inheritance with Delegation
A 클래스와 B 클래스가 있고 B 는 A 를 상속받는다면 B 는 A 의 기능을 바로 이용할 수있다. 이것은 상속(Inheritance)이다. 위임(Delegation)은 B 클래스가 A 클래스의 인스턴스를 가지고(위임 필드) B에서 A의 메서드를 호출하는 것이다. A 의 기능의 실행을 B 에게 위임하는 것이다. 상속은 상위클래스의 기능들중 불필요한 기능들까지 B 가 상속받을 수...
-
Java Refactoring Duplicate Observed Data
소프트웨어에서 어떤 객체에서 일어나는 일들(관측 데이터)을 다른 객체에게 알려줘야 하는 상황들이 빈번하게 일어난다. 우리는 ArticleManager 가 Article 들을 전부 관리하도록 했습니다. ArticleManager 가 관리하고 있는 Article 들이 업데이트(변경)이 이루어질 때 print 를 해줘야 하는데 print 할 device 가 바쁘다면 ArticleManager 가 그저 print 를 호출하는건 옳바른 동작을 보장할 수 없을것이다....