SOLID 원칙에 대하여
객체 지향 프로그래밍의 다섯 가지 원칙을 나타내는 SOLID라는 유명한 약어가 있다. 하지만 문제는 SOLID가 우리를 더 나은 프로그래머로 만들기보다는 의미 있는 약어를 만들기 위해 억지로 끼워 맞춘 느낌을 준다는 것이다. 나는 이 다섯 가지 원칙이 같은 중요성을 가지고 있지 않으며, 심지어 어떤 것은 전혀 중요하지 않다고 생각한다. 이 원칙의 가치를 아무런 확신 없이 그대로 받아들이는 것을 결단코 반대한다.
S: 단일 책임 원칙(single-responsibility principle)이란 신적인 위치의 클래스가 여러 가지 일을 하는 것과 반대로 한 클래스는 한 가지 일에만 책임을 져야 한다는 것을 의미한다. 여기서 한 가지 일이 무엇을 의미하는지는 우리가 결정하는 것이기에 약간 모호하다. 두 메서드가 있는 클래스는 여전히 한 가지 일을 담당한다고 말할 수 있을까? 심지어 신적인 클래스도 특정한 수준에서는 한 가지 일만 담당한다고 볼 수 있다. 예를 들면 바로 신적인 클래스가 되는 일 자체일 수 있다. 나라면 이것을 ‘명확한 이름의 원칙’이라고 대체하고 싶다. 즉, 클래스 이름은 모호함 없이 그 기능을 설명해야 한다. 이름이 너무 길거나 모호할 경우 클래스를 여러 클래스로 분할해야 한다.