본문 바로가기

2021/1115

📔 이상한 나라의 객체 (객사오 2장) 객체지향이란 단순히 현실 세계 모방이 아니다. 사람은 태어난 지 얼마 안 된 시기부터 물체를 하나의 개념으로 인지하고, 세상을 객체들의 집합으로 바라본다. 객체 지향과 인지 능력 인간은 물리적(e.g. 자동차, 모니터, 과일) 객체뿐만 아니라 추상적인 사물(e.g. 계좌 입금, 출금) 까지도 객체로 인식할 수 있다. 객체지향 패러다임은 인간이 세상을 다양한 객체들의 집합으로 인식하는 것처럼 SW의 세계도 다양한 SW 객체들의 집합으로 모여 있다는 믿음에서 출발한다. 하지만, 객체지향 패러다임의 목적은 현실 세계를 모방하는 것이 아닌, 현실 세계 기반 새로운 세계를 창조하는 것이다. SW 세계의 객체는 현실과 다르게 전등 스스로 불을 끄고 킬 수 있고, 비행기가 사람 없이 스스로 날 수 있다. 객체, 그.. 2021. 11. 18.
유지보수하기 좋은 코드, 앞으로의 수련 🧘🏻‍♂️ 빠르게 변하는 세상 그리고 유지보수 세상은 빠르게 변한다. 소프트웨어도 그에 맞춰 변해야 한다. 어제 개발한 기능은 오늘 더 이상 쓰지 않을 수 있다. 매일 수많은 기능이 삭제되고 추가된다. 그렇기 때문에 좋은 소프트웨어, 개발자는 빠르게 변화에 대처해야 한다. 빠르게 대처하기 위해선 변화가 오래 걸리면 안 된다. 적은 비용을 들여 코드를 수정, 추가, 삭제해야 한다. 아쉽게도 나는 그런 사람이 아니었다. 적은 비용을 들인 다는 것은 생각하지 못했다. 그동안 했던 프로젝트들은 실제 제품이 아니었고 요구사항이 적확하여 개발이 쉽거나, 큰 규모의 서비스가 아니라 변화가 쉬웠고, 시간 부족으로 기능 개발하는 데 바빴으며, 팀이 작아 의사소통이 편했다. 무엇보다 외부에 보이는 기능은 멀쩡했기 때문에 좋은 코드 .. 2021. 11. 17.
🆚 Object는 '객체'인가 '개체'인가? 번역 이슈 개체 🆚 객체 토비님의 유튜브 '토비의 봄 TV 스페셜 - 다정한 개발자 이규원님(1:14:28)' 편을 보고 Object에 대한 번역 이슈를 기억하고자 글을 남긴다. 주장 1. Object는 '개체'이다. Object는 협력적인 존재, 다른 객체에 도움을 요청하거나 응답한다. 또한 '자율적'이어야 한다. 자율적이란 말은 자기 스스로의 원칙에 따라 어떤 일을 하거나 통제하여 절제하는 것이다. 하지만 객체의 사전적 의미는 객체2 (客體) [명사] 1. [철학 ] 의사나 행위가 미치는 대상. 2. [언어 ] 문장 내에서 동사의 행위가 미치는 대상. 3. [철학 ] 작용의 대상이 되는 쪽. (참고 네이버 사전) 행위가 미치는 대상, 작용의 대상이 되는 쪽이니 주체적이라고 할 수 없다. 따라서 Object를 객.. 2021. 11. 15.
📔 협력하는 객체들의 공동체 (객사오 1장) 객체지향의 중심은 클래스나 상속이 아니다. 객체지향 패러다임의 핵심은 '자율적인 객체들의 협력'이다. 들어가며 객체지향이란 현실 속 존재하는 사물을 최대한 유사하게 모방해 소프트웨어 내부로 옮겨오는 작업이다. 현실 세계에 존재하는 사물에 대한 추상화라는 것이다. 하지만 애플리케이션 개발하면서 객체에 직접 대응되는 실세계 사물을 발견하기란 어렵다. 객체지향의 목표는 실세계를 모방한다기보다는 오히려 새로운 세계를 창조하는 것이다. 개발자의 역할은 실세계를 소프트웨어로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 실세계 모방이라는 객체지향 개념은 실무적으로 부적합하지만 객체지향이라는 용어에 담긴 기본 사상을 이해하는 데 효과적이기 때문이 이번 장에서는 객체지향은 실세계 .. 2021. 11. 15.
책 '객체지향의 사실과 오해' 소개와 요약정리 📔 객체지향의 사실과 오해 - YES24 『객체지향의 사실과 오해』는 객체지향이란 무엇인가라는 원론적면서도 다소 위험한 질문에 답하기 위해 쓰여진 책이다. 안타깝게도 많은 사람들이 객체지향의 본질을 오해하고 있다. 가장 www.yes24.com 조영호 님의 '객체지향 프로그래밍' 관련된 책은 두 권이 있고 4가지 주제를 이야기한다.(2021년 기준) 객체지향은 클래스 중심이 아닌 객체를 바라보는 것이다. 객체는 독립적인 존재가 아니라 기능 구현을 위해 협력하는 공동체의 존재이다. 객체들에게 적절한 역할과 책임을 부여할 수 있어야 한다. 1,2,3의 내용을 요구사항에 맞게 설계하고 프로그래밍 언어로 담아내야 한다. 책 "객체지향의 사실과 오해"는 4가지 주제 중 1,2번을 이야기한다. 객체지향을 이해하는 데 .. 2021. 11. 15.