분류 전체보기260 9월 첫 번째 주간회고 📚 220912-220916 이번 4주 차는 드디어 TDD에 처음 진입한 주차였다. 이번 주차를 진행하면서 객체 지향이라는 것에 한 발짝 더 다가간 것 같다. 테스트 코드를 제일 작은 분기부터 작성하면서 점점 큰 객체로까지 나아가며 프로그램을 완성하기 때문에 '아, 이게 객체 지향 프로그래밍인가?!'라는 느낌을 받고 있다. 극단적으로 말하면 TDD 를 배우지 않은 사람들은 어떻게 객체 지향 프로그래밍을 이해한 거지?라는 생각까지 들 정도이다. 나 같이 어느 한 단계에서 이해하지 못하면 다음 단계로 나아가는 것이 찝찝한 사람들한테는 필수 코스로 TDD 가 있어야 하는 게 아닌가 싶다. 아직 객체 지향이라는 내 머릿속의 비어있는 물통에, 스포이드로 한 방울의 작은 이해를 떨어트린 수준이지만 꾸준히 하다 보면.. 2022. 9. 18. 다른 관점으로 유도하는 유익한 습관 (22.09.18 TIL) 일단 나는 평소 굉장히 부정적인 생각, 부정적인 관점을 우선으로 바라보는 사람이었다. 무슨 이슈가 생기든 나에게 할 일이 주어지든 무조건 '안 좋게 끝나는 경우'를 먼저 생각하고 그 결말까지 맘대로 상상한다. 그리고 그것은 곧 내 기분으로 이어졌다. 아래 짤은 최근에 보고 나의 사고방식을 좀 전환하고 싶어서 저장했다. 본문에 굉장히 공감하는 게, 오랫동안 부정적인 관점을 먼저 생각하는 것이 습관이 되다 보니 고치는 것 또한 쉽지 않다. 무심코 '아니 이걸 어떻게 하는데.. 난 못할 것 같은데?'라고 생각해 버리고 쉽게 포기한다. 이건 비단 내 업무 하고만 관련되어 있지 않고 사람과의 관계에서도 동일한 문제를 일으킨다. 부정적인 관점, 부정적 단어, 부정적 생각... 평소 많이 했던 습관들이다. 하지만 지.. 2022. 9. 18. 생각의 전환 (22.09.17 TIL) TDD 에 익숙해지기 위해서는 생각의 전환, 사고의 전환이 필요한 것 같다. TDD 를 접하기 전에 나는 구현해야 하는 프로그램이 있다면 제일 먼저 클래스를 만들었다. 프로그램 안에서 송금 기능을 구현해야 한다고 하면, 일단 계좌 객체를 만든다. 계좌 객체에 잔액 변수를 선언하고 초기 금액을 집어 넣는다. 만약 송금 기능 안에 조금 더 디테일한 송금을 위한 요구사항이 들어있다면 이제 모니터를 바라보며 무한한 고민의 늪에 빠진다. 분명 효율적인 방법은 아니었으나 TDD 를 접하기 전에는 이런 방식으로 진행했었다. 하지만 테스트 주도 개발 방식은 이것과는 다르다. 상태 속성과 실제 메서드를 구현하기 전 냅다 테스트 클래스를 만든 후 거기서 제일 작은 요구사항부터 하나씩 하나씩 실패 후 성공하는 코드를 만든다.. 2022. 9. 17. Bounded Context (22.09.16 TIL) 오늘 코딩 인터뷰 시간 때 배운 개념을 정리해보려고 한다. 애플리케이션을 개발할 때 우리는 다양한 도메인 용어를 사용한다. 객체는 '현실세계의 은유를 통한 새로운 소프트웨어 세계의 창조'라는 관점에서, 현실 세계인 도메인에서 사용되는 이름들을 객체에 부여하는 것이다. 그런데 평소에 코드를 짤 때도 변수명을 올바르게 짓는 것이 중요하다는 것은 알았지만 정확히 왜 중요한 지는 알지 못했었다. 변수명이 겹치면 안 좋으니까~ 변수명을 제대로 써야 코드 읽을 때 편하니까~ 정도로만 이해하고 있었기 때문에 오늘 bounded context를 홀맨이 말씀해 주셨을 때도 의문점이 들어 질문을 했었다. 질문 내용을 말하기 전에 먼저 bounded context 는 무엇인지 말해보자면, 애플리케이션의 전체적인 구조를 보면.. 2022. 9. 16. '객체지향의 사실과 오해(역할, 책임, 협력 관점에서 본 객체지향)' 를 읽고 어렵고 또 어려운 책이다! 만약 객체 지향을 처음 접한 사람이라면 내용을 이해하기 위해 중간에 멈추지 말고, 처음부터 끝까지 속독하고 나서 다시 한 번 읽어보면 좋을 것 같다. 객체지향의 사실과 오해 : 네이버 도서 네이버 도서 상세정보를 제공합니다. search.shopping.naver.com 객체는 무엇인가? 객체란 식별 가능한 개체 또는 사물이다. 객체는 자동차처럼 만질 수 있는 구체적인 사물일 수도 있고, 시간처럼 추상적인 개념일 수도 있다. 객체는 구별 가능한 식별자, 특징적인 행동, 변경 가능한 상태를 가진다. 소프트웨어 안에서 객체는 저장된 상태와 실행 가능한 코드를 통해 구현된다. 협력하는 객체들의 공동체 기능을 구현하기 위해 협력하는 객체들 일상생활에서의 목표는 사람들의 협력을 통해 달.. 2022. 9. 16. TDD 한테 피드백 받기 (22.09.15 TIL) TDD 의 장점들은 역시 많지만 그 중에서도 제일 좋은 점은 작동하지 않는 코드를 미리 막을 수 있다는 점인데, 그걸 나만의 언어로 말하자면 TDD 한테 즉각 피드백을 받을 수 있다는 것이다. 그것도 기능별로, 코드 한 줄 한 줄 피드백을 받을 수 있다. 그리고 홀맨님이 말씀하셨듯 테스트 코드는 인수인계서 같은 것이기 때문에 남들이 내 코드를 보든, 내가 나중에 시간이 지나서 다시 보든 과거의 히스토리나 개발 과정들을 쉽게 상기할 수 있다. 물론 이런 장점들을 더 와닿는 상태로 만들기 위해서는 내가 TDD 에 익숙해져야 가능한 일이다. 아직은 쉬운 알고리즘 문제에 테스트 코드를 적용하는 것만 겨우 적응한 상황이지만, 어제 til 에 올렸던 것처럼 이 작업 사이클을 반복하다 보면 점점 큰 단위로도 해낼 수.. 2022. 9. 15. 이전 1 ··· 27 28 29 30 31 32 33 ··· 44 다음