Working Effectively with Legacy Code 책의 p.147에 있는 내용입니다.
메소드 또는 함수는 두 가지 타입의 역할을 하게 됩니다. 동작의 명령(Command)이 첫번째이고 결과값이 필요한 질의(Query)가 다른 역할입니다.
메소드는 이 두 가지 타입의 역할이 구분되어 있어야 되고, 메소드 내에서 두 가지가 혼용이 된다면 그 메소드의 재활용은 예상치 못한 결과를 초래하게 됩니다.
특히나 메소드 간에 통용되는 필드변수의 값에 변동이 다른 메소드에 영향을 주게 된다면 그 메소드의 독립성은 저하되는 것이고, 이에 따라 코드의 재활용과 테스트 가능성도 낮아지게 됩니다.
내용이 많이 어렵습니다만, 부작용(Side Effect) 없는 코드를 만들기 위해서 중요한 기준 원칙이라 생각합니다.
좋은 예가 생각나면 공유하도록 하겠습니다.
메소드 또는 함수는 두 가지 타입의 역할을 하게 됩니다. 동작의 명령(Command)이 첫번째이고 결과값이 필요한 질의(Query)가 다른 역할입니다.
메소드는 이 두 가지 타입의 역할이 구분되어 있어야 되고, 메소드 내에서 두 가지가 혼용이 된다면 그 메소드의 재활용은 예상치 못한 결과를 초래하게 됩니다.
특히나 메소드 간에 통용되는 필드변수의 값에 변동이 다른 메소드에 영향을 주게 된다면 그 메소드의 독립성은 저하되는 것이고, 이에 따라 코드의 재활용과 테스트 가능성도 낮아지게 됩니다.
내용이 많이 어렵습니다만, 부작용(Side Effect) 없는 코드를 만들기 위해서 중요한 기준 원칙이라 생각합니다.
좋은 예가 생각나면 공유하도록 하겠습니다.