추상화는 지식을 표현하는 도구인데 사용함과 동시에 이해를 돕습니다.

추상화가 잘 된 코드는 이름보다 한 단계 낮은 수준에서 내부의 지식들을 구성하고 있습니다.
사용함과 동시에 이해가 잘되는 예시로는 악기를 연주하다의 메소드를 추상화 후에 악기라는 인터페이스를 
각종 기타, 바이올린, 첼로 등의 구체화된 메소드에서 상속받아 사용후에 악기라는 부모 참조 변수로 
연주하다라는 메소드를 호출하면 구체화된 클래스의 메소드들이 각각 호출됩니다. 

이 개념은 함수를 작게 만드는 핵심이며 함수가 하는일은 한개여야 한다는 객체지향 srp 원리와 연관이 있습니다.
그리고 추상화를 통해 수정에는 닫혀있으며 확장에는 열려있기 떄문에 객치지향 ocp 원리와 연관이 있습니다.

다시 말하면 변경에 여유를 가지기 위해 구체적인 것에 의존해서는 안되며(클래스 상속), 추상적인 인터페이스를
상속받아 코드를 작성해야 합니다. 

다만, 적절한 추상화를 해야합니다. OCP는 개발 비용이 많이 들고, 소프트웨어 설계 복장섭을 높입니다. 
개발자가 감당 할 수 있는 정도는 한계가 있기에 변경이 있을법한 Class 예를들면 중고거래 서비스에서
product라는 인터페이스를 추상화하고 각종 소비자,관리자,비회원 등등 클래스에 추상화를 상속시켜 개발해야합니다.
product는 위 3개 클래스 말고도 인터페이스를 위임받아 사용할 곳이 많기 때문입니다.

결론적으로 적절한 추상화를 잘하면 코드를 전체적인 덩어리로 보다 쉽게 파악할 수 있습니다.

+ Recent posts