본문 바로가기

📚 전체글172

유지보수하기 좋은 코드, 앞으로의 수련 🧘🏻‍♂️ 빠르게 변하는 세상 그리고 유지보수 세상은 빠르게 변한다. 소프트웨어도 그에 맞춰 변해야 한다. 어제 개발한 기능은 오늘 더 이상 쓰지 않을 수 있다. 매일 수많은 기능이 삭제되고 추가된다. 그렇기 때문에 좋은 소프트웨어, 개발자는 빠르게 변화에 대처해야 한다. 빠르게 대처하기 위해선 변화가 오래 걸리면 안 된다. 적은 비용을 들여 코드를 수정, 추가, 삭제해야 한다. 아쉽게도 나는 그런 사람이 아니었다. 적은 비용을 들인 다는 것은 생각하지 못했다. 그동안 했던 프로젝트들은 실제 제품이 아니었고 요구사항이 적확하여 개발이 쉽거나, 큰 규모의 서비스가 아니라 변화가 쉬웠고, 시간 부족으로 기능 개발하는 데 바빴으며, 팀이 작아 의사소통이 편했다. 무엇보다 외부에 보이는 기능은 멀쩡했기 때문에 좋은 코드 .. 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.
JAVA의 클래스 xx초등학교 1학년 9반 신입생 10명의 수학, 영어점수 데이터가 있다. 이를 C언어의 변수를 사용하여 저장한다면 각 점수 별 배열을 만들어 저장하거나 사람 별 구조체를 만들어 저장할 수 있다. 만약 해당 데이터에만 작동하는 함수를 만들고 싶다면 어떻게 해야할까? C에서는 함수를 구조체 바깥에 따로 만들어 사용했다. 이 어려움을 극복하고자 프로그래밍 언어자체에서 기능을 제공하여 구조체 + 함수 형태를 만들었다. OOP(Object - Oriented Programming) OOP(객체지향프로그래밍)은 프로그래밍 패러다임 중 하나이다. 프로그램 구성하는 기본 요소를 사람이 이해하기 쉬운 "Object(객체)"로 생각하고 프로그래밍 하려고 하는 것이다. 흔히 C 언어는 절차적 언어라고 하는데 이는 변수, 함.. 2021. 11. 1.