개발자
저는 대입 면접을 앞둔 고3입니다. 최근 모의면접을 진행하면서 컴퓨터공학과 관련해 대학원까지 다니시고 연세가 좀 있으신 학교 선생님께 객체지향의 장점을 말해보라는 질문을 받았습니다. 저는 절차지향 프로그램을 객체지향적으로 재 프로그래밍하는 과정에서 객체지향으로 프로그래밍하면 객체지향의 다형성을 통해서 사람이 이해하기 쉬운 코드를 작성할 수 있고 이를 통해 유지보수하기 쉽다는 장점을 깨달았다고 답했습니다. 모의 면접이 끝난 뒤 선생님께선 객체지향의 장점은 코드 재사용성과 현실의 반영이지 유지보수의 용이성과는 관련이 없다(ㅠ0ㅠ!?)고 피드백해주셨습니다. 처음엔 선생님이 잘못 아실 수도 있다,,는 생각을 했으나 시간이 지날수록 제가 너무 제 사례를 일반화한건가 싶고 어쩌면 다형성이 유지보수의 용이성을 높이는 것이 일반적?이지 않을 수 있겠단 생각이 들었습니다.. 그래서 여러분께 묻고 싶습니다 대학면접에 가서 교수님께 객체지향의 장점으로 유지보수의 용이성을 말한다면 틀린 답변이 될 수도 있을까요? 실제 프로그래밍 현장에선 객체지향의 장점으로 유지보수의 용이성은 인정되기 어렵거나, 이론적으론 인정되지 않는건가요??ㅜㅜㅜㅜㅜ
답변 2
인기 답변
사람마다 다 생각이 다르겠지만... 그분의 입장에서 그 말이 맞다는 가정에서 접근을 해보자면, 유지보수의 용이성은 1)구조와 2)상태를 명확하게 판단할 수 있어야하는데 객체지향에서는 - 수직적으로(상속) - 수평적으로(다른 객체(클래스)간의 관계) 규모가 성장할수록 관계 1)구조가 커져나가게 됩니다. 그리고 일반적으로 객체는 mutable 2)state를 기반으로 하기 때문에, method의 호출에는 호출한 메소드, 메소드의 인풋값 외에도 객체의 상태가 암묵적으로 리턴값에 영향을 미치고 심지어 보이지 않는 side effect도 발생시킬수 있습니다. 이 상황을 극복하기 위해서는 let it crash 전략을 택하는 erlang의 전략이나 pure function을 통해 side effect를 최소화하는 functional programming의 전략을 취할 수 있겠지요 그럼에도 불구하고 실제 사회의 모델을 쉽게 가져올 수 있다는 것은 말씀하신 대로의 현실을 그대로 코드에 반영할 수 있다는 장점이겠지요
익명
작성자
2023년 11월 12일
이런 측면이 있었군요😲 알려주셔서 감사합니다!!
인기 답변
‘다형성‘을 예로 들어 보면, 특정 액션의 결과로 열 가지의 case가 생길 수 있다고 했을 때, switch-case로 처리를 하고 있다면, 열한 번째 case를 추가하는 것 자체는 어렵지 않지만 여러 코드를 수정해야하는 사이드 이펙트가 많이 발생할 수 있도, 코드가 길고 복잡해지고, 많은 case를 비교하며 성능 저하도 불러 일으킬 수 있습니다. 저는 다형성을 적용해서 이러한 리스크를 줄인 것을 ‘유지보수’가 용이하게 코드를 짰다라고 생각합니다. 프로그래밍의 관점에서도 그렇지만, 시간 비용에서도 유지보수성이 꽤나 증가했다고 생각하긴 합니다🙂🙂🙂☺️
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!