추상적으로 프로그래밍 하세요.
철수와 영희가 컴퓨터를 조립하는 코드를 작성했습니다.
철수
컴퓨터 = CPU + RAM + SDD + VGA
영희
데스크탑 = 인텔 i9 10900k + 삼성 DDR4 8GB PC4-21300 * 2 + 삼성 860EVO-250G + 지포스 RTX3090
누가 더 코드를 잘 짰나요? 철수는 대충대충 코딩한거 같은데 영희는 정말 심혈을 다해서 작성한거 같아요! 그러니 영희의 코드가 더 좋을까요?
데스크탑은 컴퓨터입니다. 인텔 i9 10900k는 CPU이고요. 삼성 DDR4 8GB PC4-21300은 RAM입니다. 즉, 철수의 코드에 영희의 코드를 대입해도 아무런 문제가 생기지 않습니다.
반면 반대는 어떤가요? 컴퓨터는 데스크탑일까요? CPU는 인텔 i9 10900k라고 할 수 있나요?
자 시간은 흘러 인텔에서 i9 20900k를 발매했습니다! 철수와 영희 모두 cpu를 업그레이드 하기로 했죠. i9 20900k는 CPU이기에 철수는 코드를 그대로 두었습니다.
하지만 영희는 코드를 변경해야만 했습니다. 다음과 같이 말이죠.
영희
데스크탑 = 인텔 i9 20900k + 삼성 DDR4 8GB PC4-21300 * 2 + 삼성 860EVO-250G + 지포스 RTX3090
꼭 명심하세요. 여러분이 추상적으로 코드를 짤 수록 추후에 코드를 변경할 확률이 줄어듭니다. 그리고 이러한 코드를 유연한 코드라고 하며 여러분이 목표로 할 것입니다.
Java와 C#에서 Interface(인터페이스)와 Abstract Class(추상 클래스)를 자유자재로 사용하면 여러분은 훌륭한 객체지향 프로그래머라 불리울 것입니다.