• JavaScript Aspect Toolkit

    애스팩트 지향 프래그래밍(AOP)는(단일한 책임 범위 내에 있지 않은) 하나 이상의 객체에 유용한 코드를 한데 묶어 눈에 띄지 않게 객체에 배포하는 기법이다. AOP 에 대해 잘 모르는 관계로 일단 용어 정리부터 한다. 용어 의미 Advice 배포할 코드 조각 Aspect Advice 가 처리할 문제 cross-cutting concern Aspect 와 동일 Target 부가기능을 부여할...


  • JavaScript test framework usage

    node 에서 기본적으로 모듈은 보통 require 를 통해서 load 하게되는데 이 모듈은 module.exports 혹은 export 한 모듈들이다. node 에서의 기본적인 모듈 로드 스타일은 CommonJs 를 따르는데 이외에도 ES 의 import, RequiresJS 의 require 를 이용하던가 하는데 이는 또한 혼용이 가능하다. 거기에 ES 와 기존 javascript API 들의 혼용에도 코드는 동작한다....


  • 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 클래스가 해당 기능을 하는 객체이며 내부에서...