데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      [데보션영과 함께하는 책읽기-6편] 객체지향의 사실과 오해 & 클린 코드

      psmdc0714 23.02.06
      1,428 19 1

      들어가기에 앞서


      안녕하세요! 저희는 데보션영 1기 뛰어들조 김경욱, 박상민, 이예은, 장윤아입니다.

      저희는 데보션영 1기 활동을 하며, 개발에 관련된 서적을 읽고 리뷰와 소감을 남기는 미션을 수행하게 되었습니다.

      그래서 저희 뛰어들조는 2인 1조로 팀을 나누어 두 권의 서적을 읽고 공유하는 스터디를 진행하였습니다!

      스터디를 진행하며 느낀 점과 책에 대한 간단한 리뷰를 정리해서 공유해드리고자 합니다.

      함께 보시겠습니다!


      객체지향의 사실과 오해




      제목 : 객체지향의 사실과 오해 - 역할, 책임, 협력 관점에서 본 객체지향

      저자 : 조영호


      이 책에서 말하는 ‘객체’란 무엇인가?

      객체는 상태(state) 와 행동(behavior)을 함께 지닌 실체라고 정의하고 있다. 객체는 충분히 협력적이며서 자율적이라고 한다.

      즉, 객체가 협력에 참여하기 위해 어떤 행동을 해야 한다면, 그 행동을 하는데 필요한 상태도 함께 지니고 있어야 한다는 것을 의미한다고 이 책은 말하고 있다.

      그렇다면, 전통적인 개발 방법과 객체지향을 구분지은 가장 핵심적인 차이는 무엇이라고 할까?

      기존 절차지향은 데이터와 프로세스를 엄격하게 구분하지만, 객체지향에서는 데이터와 프로세스를 객체라는 하나의 틀 안에 함께 묶어 놓음으로써 객체의 자율성을 보장한다고 한다.

      자율적인 객체로 구성된 공동체는 유지보수가 쉽고, 재사용이 용이한 시스템을 구축할 수 있다고 이 책에서 말하고 있다. 책의 시작부분에서 언급한 객체에 대한 설명과 비슷한 흐름이다.


      우리는 지금까지 객체지향에 대해 어떻게 생각하고 있었을까? 아마 객체지향 프로그래밍이라고 하면 클래스를 정의하는 방법과 클래스 사이의 상속에 초점을 맞추고 있었을 것이다.

      나 또한 그랬다. 하지만 이 책에선 코드를 담는 클래스의 관점보단, 메시지를 주고받는 객체의 관점으로 사고의 중심을 전환하라고 말을 해주고 있다.

      메시지를 주고받는 객체는 좀 낯설기도 하다. 평소엔 그렇게 생각을 안해왔으니까.

      하지만 이 책은 처음부터 끝까지 어떤 메시지를 수신하고 전달할 것인지에 대해 많은 설명을 하고 있다.

      메시지는 객체로 하여금 자신의 책임, 즉 행동을 수행하게 만드는 유일한 방법이라고 한다.

      이런 객체의 행동을 유발하는 행위를 ‘메시지-전송’ 이라고 설명하고 있다.


      메시지-전송은 메시지와 수신자의 조합인데, 객체가 수신할 수 있는 메시지의 모양이 객체가 수행할 책임의 모양을 결정한다고 한다.

      즉, 객체가 유일하게 이해하는 의사소통 수단은 메시지뿐이며, 객체는 메시지를 처리하기 위한 방법을 자율적으로 선택하는 것이다.

      이렇게 객체가 제공하는 메시지는 외부의 다른 객체가 볼 수 있는 공개된 영역에 속하는 것이다.

      메시지를 위해 책임을 수행하는 방법은 외부의 다른 객체가 볼 수 없는 객체 자신의 사적인 영역에 속하게 되는 것이다.

      이렇게 객체가 수신할 수 있는 메시지와 메시지를 처리하기 위해 선택할 수 있는 방법이 존재한다고 한다.

      메시지를 처리하기 위해 내부적으로 선택하는 방법을 ‘메서드’ 라고 이 책은 설명하고 있다.

      객체가 메시지를 받으면 해당 메시지를 처리할 수 있는지 여부 판단을 하고, 처리 가능 판단이 내려지면 처리할 방법인 메서드를 선택하게 되는데,

      이때 메시지에 대응되는 특정 메서드가 실행된다고 한다.

      이렇게 메시지를 수신한 객체가 수행시간 안에 메서드를 선택할 수 있다는 사실은 다른 프로그래밍 언어와 객체지향 프로그래밍 언어를 구분 짓는 또 다른 핵심적 특징이다.

      서로 다른 유형의 객체가 동일한 메시지에 대해 서로 다르게 반응하는 것을 뭐라고 할까? 이 책에선 ‘다형성’ 이라고 표현하고 있다.

      즉, 서로 다른 타입에 속하는 객체들이 동일한 메시지를 수신할 경우 서로 다른 메서드를 이용해 메시지를 처리할 수 있는 메커니즘이라는 뜻이다.

      이런 다형성은 대체 가능성을 이용해 설게를 유연하고 재사용 가능하게 만든다고 한다.

      ‘메시지를 따라라’

      이 책에서 가장 중요한 말인 것 같다.

      클래스는 단지 동적인 객체들의 특성과 행위를 정적인 텍스트로 표현하기 위해 사용할 수 있는 추상화 도구일 뿐이라고 강조하고 있다.

      이런 객체지향의 패러다임으로의 전환은 메시지를 주고받는 동적인 객체들의 집합으로 바라보는 것에서 시작된다고 한다.

      또한 훌륭한 객체지향 설계는 어떤 객체가 어떤 메시지를 전송할 수 있는가와 어떤 객체가 어떤 메시지를 이해할 수 있는가를 중심으로 객체 사이의 협력 관계를 구성하는 것이라고 설명하고 있다.

      ‘메시지를 믿어라. 그러면 자율적인 책임은 저절로 따라올 것이다.’

      이 책의 저자가 제일 강조하고 싶은 구절이 아닐까 예상하면서 정리를 마친다.


      클린 코드



      제목 : Clean Code - 애자일 소프트웨어 장인 정신

      저자 : 로버트 C. 마틴


      여러분은 클린 코드라는 단어를 들어보신 적이 있으신가요?

      클린 코드란, 말 그대로 사람들이 읽기 편한 깨끗한 코드를 말합니다.

      그 동안 직접 코드를 작성하며 클린 코드에 대한 갈증을 느끼고 클린 코드를 작성하는 개발자에 가까워지기 위해 해당 책을 선택하고 함께 읽어보았습니다.

      그리고 이 책에서 강조되고 있는 형용사 키워드를 중심으로 내용을 정리해보았습니다.

      분명하게.

      클린 코드에 가까워지는 방법 중 하나는 분명하게 코드를 작성해야 하는 것입니다. 그럼 어떠한 방식을 통해 분명해질 수 있을까요?

      변수, 그리고 함수의 이름을 읽고 의미하는 바가 무엇인지 바로 알 수 있도록 작성하면 됩니다.

      나 혼자 아는 단어로 간결하게 표현하는 것은 좋은 방법이 아니며,

      동사와 명사를 적절히 사용해 처음 코드를 보는 사람이 읽더라도 해당 변수와 함수가 어떤 역할을 하는지 직관적으로 알 수 있어야 합니다.

      더 나아가 발음하기 쉬울수록, 검색하기 쉬울수록 더 좋은 이름이 된다고 합니다. 경계 또한 분명히 정하면 좋습니다.

      경계란, 외부 코드와 내부 코드 사이의 경계를 뜻합니다.

      간결하게.

      함수를 만들 때에는 각 함수가 하나의 역할만을 할 수 있도록 간결하게 만드는 것이 중요합니다.

      이는, 함수의 존재 이유까지 내려가서 생각해보면 당연한 것으로 이해될 수 있는데, 함수를 만드는 이유가 반복되는 역할을 분리하여 사용하기 위함이기 때문입니다.

      함수의 인수 역시 가장 이상적인 것은 인수가 아무것도 없는 것입니다. 간결함은 함수에만 적용되는 것이 아니라, 코드 전체에도 적용하면 좋습니다.


      소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다고 합니다.

      생각은 기록한 후 읽기 좋게 다듬곤 하며, 초안은 대개 서투르고 어수선하므로 원하는 대로 읽힐 때까지 말을 다듬고 문장을 고치고 문단을 정리합니다.

      이처럼 코드를 작성하는 것도 글짓기와 같이 한다면 클린 코드 작성에 가까워질 수 있습니다.


      다독다독 소감


      김경욱 - 객체지향의 사실과 오해

      다독다독 기간동안 예은님과 함께 책을 완독했습니다.

      사실 개발하기 바쁘다는 이유로, 여러가지 핑계로 책 읽는 시간을 미뤄두었고 항상 머릿속으로 생각만 하였습니다.

      이번 기회로 한 권의 책을 완독할 수 있어서 좋았습니다.

      오히려 바쁜 시간 와중에 객체지향에 대한 개념을 공부할 수 있었고, 그 안에서 인생에 대한 것도 배우며 힐링을 하기도 하였습니다.

      ‘객체지향의 사실과 오해’ 라는 책을 읽는 시간 동안 뜻깊었고, 바쁜 와중에도 책을 읽는 습관을 기를 수 있어서 좋았습니다.

      경욱의 다독다독 일지 확인하기

      이예은 - 객체지향의 사실과 오해

      면접을 보거나 프로그램 질문을 받을 때 항상 객체 지향에 대한 질문을 필수적으로 받으면서 객체지향에 대해 더 깊게 공부해보고 싶어 이 책을 고르게 되었습니다.

      처음에는 너무 당연하고 쉬운 주제를 고른 게 아닌가 싶었지만, 읽을수록 객체지향의 세계는 무궁무진하다는 걸 느꼈습니다.

      매주 매 챕터에 대해 정리하면서 기록하니까 그냥 책을 읽을 때보다 더 기억에 오래 남았습니다.

      이전에 가볍게 생각했던 객체지향의 개념이 생각보다 깊고 많은 영역의 지식이라는 걸 알게 되었습니다.

      어려운 개념을 도입부에 비유를 통해 설명하는 부분을 읽으며 이해하기가 쉬웠습니다.

      책에 적혀 있는 많은 예시 들이 내가 평소에 생각하는 사고 과정을 객체를 바라보는 사고 과정으로 바꾸는 데 도움이 많이 되었습니다.

      객체지향에 대한 이해를 높이고 싶거나, 프로그램을 설계하는 과정에서 막힘이 있는데 이 근본적인 답답함을 해결하고 싶은 사람들에게 적극 추천합니다!

      예은의 다독다독 일지 확인하기

      박상민 - 클린 코드

      개발을 하다보면 최적화가 잘 된 프로그램을 설계하는 것, 사용자들이 받아들이기 쉬운 프로그램을 만드는 것도 물론 중요하지만

      언제나 마음 속에는 '같은 개발자들이 내 코드를 쉽게 이해하게 하는 것'도 중요하지 않을까하는 생각이 있었습니다.

      그러다 클린 코드 스터디를 진행하고 서로에게 공부한 내용을 공유하면서, 같은 개발자들이 읽기 쉬운 깔끔한 코드를 만드는 최적화나 다름이 없고,

      글을 쓰듯이 코드도 계속 관심을 가지고 다듬어야 좋은 코드가 나올 수 있다는 걸 배울 수 있었습니다.

      바쁘다는 핑계로 책을 읽을 기회가 많이 없던 저에게 좋은 기회가 되었던 것 같습니다.

      상민의 다독다독 일지 확인하기

      장윤아 - 클린 코드

      스스로 코드를 작성하며, 제가 지금 짜고 있는 코드가 최적의 코드는 아니라는 것을 느낀 적이 많았지만 그걸 최적의 코드로 만들기 위한 방법을 몰라 그대로 두었던 적이 많이 있습니다.

      그러한 상태에서 조금이라도 벗어나고 싶어 클린코드 책을 함께 다독다독으로 읽게되었고, 혼자 읽는 것이 아닌 함께 읽어 클린코드의 방법들을 더 잘 흡수할 수 있었습니다.

      앞으로는 그러한 방법들을 적용하여 클린코드를 작성하는 사람과 조금은 닮아지지 않을까합니다!

      윤아의 다독다독 일지 확인하기

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      psmdc0714 님의 최신 블로그

      더보기
      동영상 기고하기