본문 바로가기

분류 전체보기

(98)
[오브젝트] ch03 역할, 책임, 협력 OOP 패러다임의 본질은 협력하는 객체들의 공동체를 만드는 것 “객체지향 설계의 핵심은 협력을 구성하기 위해 적절한 객체를 찾고 적절한 책임을 할당하는 과정에서 드러난다.”73p 하지만 적절하다는 표현에 대한 의구심은 들었다. 적절하다는 것은 이미 경험해본 사람만이 정할 수 있는 것 아닌가 와 경험해 본 사람들 간에서도 차이가 있을 수 있다. 아직은 초반이니 그려러니하고 우선 읽어 나아가 보고 적용해 봐야 저 말의 의미를 조금은 알 수 있겠다 싶다. 협력 “객체들이 애플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고 한다.”74p “객체가 협력에 참여하기 위해 수행하는 로직은 책임이라고 부른다.”75p “객체들이 협력 안에서 수행하는 책임들이 모여 객체가 수행하는 역할을 구성한다.”75p ..
[서평] 러스트 프로그래밍 공식 가이드 2판 JYP "러.스.트" 처음 노마드 코더의 영상을 보고 C와 속도차이가 그렇게 크지 않다는 것과 (c가 1.0걸린다면 rust는 1.05) 메모리 오염 등의 이슈를 사전에 방지할 수 있다는 점에서 멋진 언어라 생각 들었다. 시스템콜 쓰는 프로그램이나 시스템 프로그래밍을 한다면 러스트를 어지간하면 써야겠단 생각도 들게 했다. 책 구성 러스트 설치 및 기본적인 언어 형식에 대한 설명부터 러스트의 특징들(소유권, 제네릭 타입, 트레이트) 등을 소개하며 진행된다. 마지막에는 웹서버를 구축하는 것으로 끝은 맺는다. 감상 우선 가독성이 좋다. 오픈 커뮤니티에서 참여해서 그런지 집단지성의 힘을 느낄 수 있었다. 온라인으로도 무료로 볼 수 있지만 나에게는 종이책이 좀더 잘 읽혔기에 더 가독성이 좋다 느꼈다. 읽으면서 드..
[오브젝트] ch02 객체지향 프로그래밍 🖋️ 후기 객체지향적으로 코딩을 한다고 하면 우선 클래스를 생각하고 동작이 무엇이고 그에 필요한 데이터는 무엇인가부터 생각했었습니다. 객체지향은 객체를 지향하라는 것. 그렇기에 클래스보다 객체에 초점을 맞추어야 진정한 객체지향 패러다임으로의 전환을 얻을 수 있다는 것이 인상 깊습니다. 어떤 객체가 필요한지 고민, 어떤 객체들이 어떤 상태와 행동을 가지는지 먼저 결정한다. 객체는 기능을 구현하기 위해 협력하는 공동체의 일원 객체지향에서 캡슐화가 중요하며 재사용성이 중요합니다 상속을 통해 중복되는 부분은 부모클래스로 받아와서 재사용성을 높일 수 있습니다. 하지만 상속의 경우 자식 클래스에서 부모클래스에 접근할 수 있고 부모클래스가 변동될 때 자식클래스도 바뀌기 쉽다는 점과 부모, 자식 클래스의 관계를 컴파일..
[오브젝트] Intro + ch01 객체, 설계 기억하고 싶은 부분 저자가 말하는 객체지향으로 향하는 세 걸음 클래스가 아니라 객체를 바라보는 것에서부터 시작 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 존재로 바라보는 것 협력에 참여하는 객체들에게 얼마나 적절한 역할과 책임을 부여할 수 있느냐에 달려 있다. 책에서 제시하는 방법이 객체지향을 구현하기 위한 유일한 방법은 아니다. 프로그래밍 패러다임이 중요한 이유 개발자 공동체가 동일한 프로그래밍 스타일과 모델을 공유할 수 있게 함으로써 불필요한 부분에 대한 의견 충돌을 방지한다. 실무 vs 이론 (로버트 L. 글래스 ) 실무 방식을 선호 이유는 초기 단계에서는 실무를 관찰한 결과를 바탕으로 이론을 정립하는 것이 최선 컴퓨터 공학 분야는 역사가 다른 분야에 비해 상대적으로 짧다..
[서평] 로버트 나이스트롬의 인터프리터 in Java, C 길벗 출판사로부터 책을 제공받고 진행되는 서평임을 밝혀둡니다 처음으로 서평을 써보게 되었습니다. 어떻게 남기는 것이 좋을까 고민하다 보는 사람입장에서는 결론이 빠르게 나오고 궁금하면 이후에 근거나 추가설명을 찾아볼 수 있는 글이면 좋을 거 같아 읽고 개인적으로 생각해 보는 책의 특징과 추천독자를 적기로 하였습니다. 결론 인터프리터, 컴파일러가 어떻게 일하나 문자열 파싱은 어떻게 진행되는지 궁금하였는데 소스코드와 설명을 통해 이해하기 좋은 책입니다. EA, Google 출신 엔지니어의 친절한 설명과 코드로 인터프리터와 컴파일러를 만들어 볼 수 있습니다. Java로 시작하여 C도 써볼 수 있고 뒤에는 가비지 컬렉팅에 대해서도 배울 수 있습니다. 각 챕터가 적정 길이로 구성되어 부담이 덜한 편이며 중간 중간 ..
[Clean Code | 10장 클래스 ] Day15,16 기억하고 싶은 부분 클래스는 적어야 한다 단일 책임 원칙 클래스나 모듈을 변경할 이유가 하나뿐이어야 한다 변경할 이유가 하나여야 한다 클래스는 인스턴스 변수 수가 작아야 한다 일반적으로 메서드가 변수를 더 많이 사용할수록 메서드와 클래스는 응집도가 높다. 모든 인스턴스 변수를 메서드마다 사용하는 클래스는 응집도가 가장 높다 소감 객체에 대해 이야기할때 응집도와 결합도에 대한 말이 나온다 응집도는 높아야 하고 결합도는 낮아야 한다고 하는데 둘이 비슷하게 느껴져서 둘의 차이점이 무엇인가 생각 들곤 했었다. 책에서 응집도에 대해서 메서드에서 인스턴스 변수를 쓸수록 응집도가 높다는 설명에서 좀 더 감을 잡을 수 있었다. 필요한 건 있어야 하니까 필요한 건 멤버변수라 보면 메서드 입장에서 변수를 파라미터나 전역변..
[Clean Code | 9장 단위 테스트 ] Day14 기억하고 싶은 부분 TDD 세 가지 법칙 실패하는 단위테스트 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 실제 코드와 맞먹을 정도로 방대한 테스트 코드는 심각한 관리 문제를 유발하기로 한다. 깨끗한 코드 유지하기 개념당 assert 문 수를 최소로 줄여라 테스트 함수 하나는 개념 하나만 테스트하라 소감 깨끗한 코드 유지하기 부분이 납득되었다. 빠른 테스트를 위해 알아보기 어려운 상태의 테스트 코드를 작성하는 것은 나중에 바뀔 실제코드에 맞게 테스트 코드도 변경되어야 하므로 테스트 코드 변경을 어렵게 만들기에 그렇다 도서관 프로젝트에서 배포 전에 만든 단위 테스트가 얼..
[Clean Code | 7장 오류처리 ] Day10~12 기억하고 싶은 부분 뭔가 잘못될 가능성은 늘 존재한다. 뭔가 잘못되면 바로 잡을 책임은 바로 우리 프로그래머에게 있다. 어떤 면에서 try 블록은 트랜잭션과 비슷하다. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. null을 반환하는 습관 흔히 저지르는 바람에 오류를 유발하는 행위를 설명하면서 첫 번째 예시로 들음 null을 반환하는 코드는 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘긴다. 누구하나라도 null 확인을 빼먹는다면 애플리케이션이 통제 불능에 빠질지도 모른다. null 확인이 너무 많아 문제. 메서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예외를 던지거나 특수 사례 객체를 반환한다. 특수 사례 패턴 (SPECIAL CASE P..
[Clean Code | 6장 객체와 자료구조] Day09 기억하고 싶은 부분 “변수를 비공개로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다.” private처리하는 목적으로 가져다 쓰는 입장에서는 내부가 어떻게 되어있든 혹은 특정 값에는 접근하지 못하게 하고 싶어서라고만 생각했었다. 같은 것을 의미하는 것일수도 있지만 조금은 다른 관점에서 private를 바라보았다는 생각이 든다. “변수를 private으로 선언하더라도 각 값마다 get함수와 set함수를 제공한다면 구현을 외부로 노출하는 셈이다” “인터페이스와 get/set 함수만으로는 추상화가 이뤄지지 않는다. 개발자는 객체가 포함하는 자료를 표현할 가장 좋은 방법을 심각하게 고민해야 한다. 아무 생각 없이 get/set 함수를 추가하는 방법이 가장 나쁘다.” private로 선언한 ..
[Clean Code | 5장 형식 맞추기 ] Day08 기억하고 싶은 부분 코드가 어수선해 보인다면 독자들은 프로젝트의 다른 측면도 똑같이 무성의한 태도로 처리했으리라 생각할 것이다 신문 기사처럼 작성하라 개념은 빈 행으로 분리하라 서로 밀접한 개념은 세로로 가까이 둬야 한다 지역변수는 각 함수 맨 처음에 선언해야 한다 소감 형식이라 하면 고리 타분하다 생각들 수도 있는데 사례들을 보여주어서 확 와닿았다. 가끔 알고리즘 문제 다른 이의 풀이를 보면 줄 수를 줄이기 위한 컨셉이지만 재미로 한 줄에 다 적는 경우도 있다. 그렇게 되면 그 글은 대강 보다가 말게 되는데 그런 점에서 들여 쓰기 없이 한 예시가 책에서 나오고 들여쓰기 있을 때와 비교되어서 확실하게 와닿았다 한 줄을 80자로 억제하는 규칙의 이름을 알 수 있어 나름 나에게는 유익하였고 저자는 120자를..