반응형 독서25 객체지향의 사실과 오해 1 ~ 4장 현재 필자는 자바지기 박재성님이 운영하시는 NextStep 교육 웹사이트에서 수강한 자바 플레이 그라운드 with TDD, 클린코드 마지막 블랙잭 미션을 진행하고 있다. 미션을 해결하기 위해 도메인을 설계하고 있는데, 생각보다 많이 어렵다. 특히 인스턴스 변수 2개까지만 사용하라는 요구사항이 너무 어렵게 느껴져, 객체지향에 관한 보충 공부가 필요하다고 느껴졌다. 그래서 몇 달 전에 읽은 객체지향의 사실과 오해(줄여서 객사오라고 부르겠다)를 다시 읽었다. 이번 포스팅은 객사오 1장부터 4장까지 다시 읽으면서 기억하고 싶은 중요한 부분을 남기려고 한다. 그럼 바로 시작하겠다. 1장. 협력하는 객체들의 공동체 객체지향은 현실 세계를 모방하는 것이 아니다. 새로운 세계를 창조하는 것이다. 여러 객체가 동일한 역.. 독서/객체지향의 사실과 오해 2022. 8. 16. 토비의 스프링 Vol.1 4장 예외 4장은 예외 관련 내용입니다. 이전에 강의에서 배운 스프링 DB 1편에서 배운 내용과 비슷한 부분이 있습니다. 아래 예외 관련 포스팅도 보시면 좋을 것 같습니다. https://devdebin.tistory.com/208?category=1028513 예외와 예외 처리 본 게시글은 인프런 김영한 선생님 강의 스프링 DB 1편을 완강하고 배운 것을 남기고자 적은 포스팅입니다. 강의 링크는 아래와 같습니다. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1/das.. devdebin.tistory.com 그럼 포스팅 시작하겠습니다. 사라진 SQLException 우선 예외를 처리할 때 지켜야할 절대적인 핵심 원칙은 하나다. 모든예외는 적절하게.. 독서/토비의 스프링 2022. 7. 23. 토비의 스프링 Vol.1 3장 템플릿 3장은 템플릿에 관련된 내용입니다. 템플릿이란 바뀌는 성질이 다른 코드 중에서 변경이 거의 일어나지 않으며 일정한 패턴으로 유지되는 특성을 가진 부분을 자유롭게 변경되는 성질을 가진 부분으로부터 독립시켜서 효과적으로 활용할 수 있도록 하는 기법이다. 3.1 초난감 DAO 예외 처리 우리는 1장에서 초난감 DAO를 멋지게 리팩토링했다. 전략 패턴을 바탕으로 추상화에 의존하며, DI를 바탕으로 OCP(개방폐쇄 원칙)을 지키도록 했다. 또한 관심사를 멋지게 분리해냈다. 그러나 저번 시간에 잠깐 언급했는데 예외 처리에 관한 부분을 다루지 않았다. 잠깐만 UserDao 실습 코드를 살펴보자. PreparedStatement ps = connection.prepareStatement("delete from user.. 독서/토비의 스프링 2022. 7. 23. 토비의 스프링 Vol.1 1장 오브젝트와 의존관계 2023.02.13 복습 및 정리 실습 레포는 아래와 같습니다. https://github.com/happysubin/book-study/tree/main/%ED%86%A0%EB%B9%84%EC%9D%98%20%EC%8A%A4%ED%94%84%EB%A7%81 이번 포스팅은 토비의 스프링 3.1 1장에 관한 학습 기록입니다. 1장 도입부 자바는 객체지향 언어다. 우리가 학습하는 스프링은 자바를 기반으로 한 프레임워크다. 자바를 기반으로 만들어진 기술, 스프링이 제일 중요하게 여기는 핵심 가치는 바로 객체지향적인 프로그래밍이다. 그러므로 스프링은 오브젝트(객체)에 제일 관심을 많이 둔다. 오브젝트 간의 관계에 집중하며, 라이프 사이클에 집중한다. 더 나아가서는 오브젝트 설계, 어떤 단위로 만들어지는지까지 관.. 독서/토비의 스프링 2022. 7. 21. 일상 속 사물이 알려주는 웹 API 디자인 - 사용자를 위한 API 디자인하기 TIL (Today I LeTIL (Today I Learned) 2022.05.07 오늘 읽은 범위 2부 사용자를 위한 API 디자인하기 책에서 기억하고 싶은 내용 API는 무조건 사용자들의 목표를 달성하기 위해서 존재합니다. 올바른 입장, 올바른 관점을 선택하는 것이 인터페이스와 API를 디자인하는데 있어서 가장 중요합니다. 작업 방식(내부 동작 원리)에 집중하면 인터페이스가 복잡해진다. 사용자가 할 수 있는 일에 집중해 인터페이스를 단순하게 해라. API는 반드시 컨슈머의 관점에서 디자인되어야 합니다. 프로바이더의 관점이 아니라. API 디자인 시 체크 사항 누가 API를 사용하는가? 무엇을 할 수 있는가? 어떻게 하는가? 하기 위해서 무엇이 필요한가? (입력에 대한 질문) 끝나면 무엇을 반환하는가.. 독서/일상 속 사물이 알려주는 웹 API 디자인 2022. 5. 7. 일상 속 사물이 알려주는 웹 API 디자인 - API 디자인 기초 TIL (Today I LeTIL (Today I Learned) 2022.05.02 오늘 읽은 범위 1부 API 디자인 기초 책에서 기억하고 싶은 내용 책에서 말하는 API는 웹 API다. 소프트웨어를 위한 웹 인터페이스다. API는 소프트웨어를 레고처럼 만들어준다. 이 의미는 API를 사용해 더 거대하고 새롭고 다양한 것을 만들 수 있다는 의미다. 다양한 컨슈머가 사용하는 것은 퍼블릭 API고, 정해진 컨슈머들만 사용할 수 있는 API는 프라이빗 API다. (내부망, 인터넷으로 결정되지 않는다) API는 구현, 처리 과정을 숨기고 원하는 응답만 컨슈머에게 전해준다. 언젠가 API를 노출하면 해당 API 소프트웨어 개발 과정에 전혀 관련 없었던 사람들이 API를 사용한다. 그렇기 때문에 API를 사용하.. 독서/일상 속 사물이 알려주는 웹 API 디자인 2022. 5. 2. 2022.03.06 클린 코드 - 단위 테스트 TIL (Today I LeTIL (Today I Learned) 2022.03.06 오늘 읽은 범위 9장. 단위 테스트 책에서 기억하고 싶은 내용을 써보세요. 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트다. (p.157) 테스트 코드는 실제 코드 못지 않게 중요하다. (p.157) 테스트 코드에서 제일 중요한 것은 가독성이다. (p.158) 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 사실 요즘 제일 궁금하고 배워야한다고 느끼는 것이 바로 이 테스트 코드다. 클린 코드에서도 테스트 코드에 관해서는 책 한 권으로도 부족할 정도로 많은 얘기를 할 수 있다고 한다. 이 책에서는 테스트 코드에 할당된 부분이 너무 적은 것 같다. 사실 이부분에서는 저번 장들만큼 정보와 깨.. 독서/클린코드 2022. 3. 6. 2022.03.03 클린 코드 - 오류 처리 TIL (Today I LeTIL (Today I Learned) 2022.03.03 오늘 읽은 범위 7장. 오류처리 책에서 기억하고 싶은 내용을 써보세요. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. (p.132) 먼저 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 방법을 권장한다. 그러면 자연스럽게 try 블록의 트랜잭션 범위부터 구현하게 되므로 범위 내에서 트랜잭션 본질을 유지하기 쉬워진다. (p.133) 오류 메시지에 정보를 담아 예외와 함께 던진다. (p.135) 오류는 많고 분류하는 방법도 다양하다. 그러나 애플리케이션에서 오류를 정의할 때 프로그래머에게 가장 중요한 관심사는 오류를 잡아내는 방법이다. .. 독서/클린코드 2022. 3. 3. 2022.03.01 클린 코드 - 객체와 자료 구조 TIL (Today I LeTIL (Today I Learned) 2022.03.01 오늘 읽은 범위 6장. 객체와 자료구조 책에서 기억하고 싶은 내용을 써보세요. 구현을 감추려면 추상화가 필요하다. (p.119) 그저 조회 함수(Getter)와 설정 함수(Setteer)로 변수를 다룬다고 클래스가 되지는 않는다. 그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. (p.119) 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. (p.119) 자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. (p.119) 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면, 객체 지향 코드.. 독서/클린코드 2022. 3. 1. 2022.02.28 클린 코드 - 5장 형식 맞추기 TIL (Today I LeTIL (Today I Learned) 2022.02.28 오늘 읽은 범위 5장. 형식 맞추기 책에서 기억하고 싶은 내용을 써보세요. 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. (p.96) 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. (p.96) 소스 파일 첫 부분은 고차원 개념과 알고리즘을 설명한다. 아래로 내려갈수록 의도를 세세하게 묘사한다. 마지막에는 가장 저 차원 함수와 세부 내역이 나온다. (p.98) 종속 함수. 한 함수가 다른 함수를 호출한다면 두 함수는 세로로 가까이 배치한다. 또한 가능하다면 호.. 독서/클린코드 2022. 3. 1. 2022.02.24 클린 코드 - 4장 주석 TIL (Today I LeTIL (Today I Learned) 2022.02.24 오늘 읽은 범위 4장. 주석 책에서 기억하고 싶은 내용을 써보세요. 프로그래밍 언어 자체가 표현력이 풍부하다면, 아니 우리가 프로그래밍 언어를 치필하게 사용해 의도를 표현할 능력을 가지고 있다면, 주석은 전혀 필요하지 않다. (p.68) 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다.(p.69) 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 본인이 이해하기에, 좋은 주석은 법적인 주석, 의도를 설명하는 주석, 결과를 경고하는 주석, TODO 주석, 대수롭지 않다고 여겨질 뭔가의 중요성을 강조하는 주석이 있다. 그외의 주석은 코드를 통해서 해결할 수 .. 독서/클린코드 2022. 2. 24. 2022.02.22 클린 코드 - 3장 함수 TIL (Today I Learned) 2022.02.22 오늘 읽은 범위 3장. 함수 책에서 기억하고 싶은 내용을 써보세요. 함수를 만드는 첫째 규칙은 '작게!'다. 함수를 만드는 둘째 규칙은 '더 작게!'다. (p.43) if문 /else 문 /while 문 등에 들어가는 블록은 한 줄이어야 한다는 의미. 대개 거기서 함수를 호출(p.44) 코드로 다시 한번 상기하자. //모든 코드가 아닌 if문으로만 확인. //올바르지 못한 버전 if(isTestPage){ WikiPage testPage=pageData.getWikiPage(); StringBuffer newPageContent = new StringBuffer(); //이렇게 코드가 if문에서 계속 이어진다. } //올바른 버전 if(isTes.. 독서/클린코드 2022. 2. 22. 이전 1 2 3 다음 반응형