본문 바로가기

TIL173

생각의 전환 (22.09.17 TIL) TDD 에 익숙해지기 위해서는 생각의 전환, 사고의 전환이 필요한 것 같다. TDD 를 접하기 전에 나는 구현해야 하는 프로그램이 있다면 제일 먼저 클래스를 만들었다. 프로그램 안에서 송금 기능을 구현해야 한다고 하면, 일단 계좌 객체를 만든다. 계좌 객체에 잔액 변수를 선언하고 초기 금액을 집어 넣는다. 만약 송금 기능 안에 조금 더 디테일한 송금을 위한 요구사항이 들어있다면 이제 모니터를 바라보며 무한한 고민의 늪에 빠진다. 분명 효율적인 방법은 아니었으나 TDD 를 접하기 전에는 이런 방식으로 진행했었다. 하지만 테스트 주도 개발 방식은 이것과는 다르다. 상태 속성과 실제 메서드를 구현하기 전 냅다 테스트 클래스를 만든 후 거기서 제일 작은 요구사항부터 하나씩 하나씩 실패 후 성공하는 코드를 만든다.. 2022. 9. 17.
Bounded Context (22.09.16 TIL) 오늘 코딩 인터뷰 시간 때 배운 개념을 정리해보려고 한다. 애플리케이션을 개발할 때 우리는 다양한 도메인 용어를 사용한다. 객체는 '현실세계의 은유를 통한 새로운 소프트웨어 세계의 창조'라는 관점에서, 현실 세계인 도메인에서 사용되는 이름들을 객체에 부여하는 것이다. 그런데 평소에 코드를 짤 때도 변수명을 올바르게 짓는 것이 중요하다는 것은 알았지만 정확히 왜 중요한 지는 알지 못했었다. 변수명이 겹치면 안 좋으니까~ 변수명을 제대로 써야 코드 읽을 때 편하니까~ 정도로만 이해하고 있었기 때문에 오늘 bounded context를 홀맨이 말씀해 주셨을 때도 의문점이 들어 질문을 했었다. 질문 내용을 말하기 전에 먼저 bounded context 는 무엇인지 말해보자면, 애플리케이션의 전체적인 구조를 보면.. 2022. 9. 16.
TDD 한테 피드백 받기 (22.09.15 TIL) TDD 의 장점들은 역시 많지만 그 중에서도 제일 좋은 점은 작동하지 않는 코드를 미리 막을 수 있다는 점인데, 그걸 나만의 언어로 말하자면 TDD 한테 즉각 피드백을 받을 수 있다는 것이다. 그것도 기능별로, 코드 한 줄 한 줄 피드백을 받을 수 있다. 그리고 홀맨님이 말씀하셨듯 테스트 코드는 인수인계서 같은 것이기 때문에 남들이 내 코드를 보든, 내가 나중에 시간이 지나서 다시 보든 과거의 히스토리나 개발 과정들을 쉽게 상기할 수 있다. 물론 이런 장점들을 더 와닿는 상태로 만들기 위해서는 내가 TDD 에 익숙해져야 가능한 일이다. 아직은 쉬운 알고리즘 문제에 테스트 코드를 적용하는 것만 겨우 적응한 상황이지만, 어제 til 에 올렸던 것처럼 이 작업 사이클을 반복하다 보면 점점 큰 단위로도 해낼 수.. 2022. 9. 15.
문제-해결-반성의 성장 싸이클 (22.09.14 TIL) 이번 주부터 TDD를 시작했는데 이 시점에 보기에 아주 좋은 아샬 님의 영상을 찾아서 기록으로 남기려고 한다. 영상은 본문 맨 아래에 있다. 스스로가 성장을 하기 위해서 가만히 있는 것은 나에게 전혀 도움이 되지 않는다. 내가 지금 성장한 건지 아닌 지 알기 위한 방법 중 하나는 내가 문제를 해결할 수 있게 되었는가, 아닌가 이다. 지금 내가 어떤 상태에 와 있는지 알고 싶으면 문제를 만나야 한다. 적당한 난이도의 문제를 만나든 어려운 문제를 만나든 대부분 처음에는 실패하는데, 이 실패 단계에서 낙심할 필요가 전혀 없다. 당연히 어려운 문제일 것이다. 하지만 실패를 했다는 것은 '어떤 것이 통하는 방법이고, 어떤 것이 통하지 않는 방법'이라는 것을 알게 된 것이다. 아샬 님이 영상에서 언급하신 (내가 정.. 2022. 9. 14.
코딩도장 시간 활용하기 (22.09.13 TIL) 주간 일과 시간 중에 코딩도장 이라고, 알고리즘 문제를 하루에 한 개씩 푸는 시간이 있다. 매번 할 때마다 해결 방법을 고민하기에도 시간이 모자라서 다소 뻔한 풀이 방법으로 문제를 풀어내고는 했었는데, 이렇게만 해서는 시야가 넓어질 것 같지가 않았다. 그래서 이제는 답 제출 후 시간이 많이 남으면 답을 제출 한 뒤에 다른 사람들이 한 코드를 보면서 이렇게도 풀 수 있구나~ 하고 혼자 분석해보는 시간을 가져보려고 한다. 오늘 푼 것은 프로그래머스 문제 중에 '제일 작은 수 제거하기' 라는 문제였고, 정수를 저장한 배열에서 가장 작은 수를 제거하는 배열을 리턴하는 함수를 완성하는 미션이였다. 제일 많은 사람들이 푼 방법은 아래와 같은데 나도 이런 방식으로 풀어냈다. (힌트 살짝 보긴 함 ㅎㅎ) class S.. 2022. 9. 13.
작은 성공 만들기 (22.09.12 TIL) 추석 연휴가 끝나고 다시 새로운 한 주가 시작됐다. 지난 한 주동안 그냥 쉬기만 하면 너무 나태해질 것 같아서 쉬는 동안에 혼자만의 약속을 한 게 있다. TIL 은 매일 쓰기, 프로그래머스 문제 하루에 하나씩 풀어서 커밋하기, 주말 강의 영상은 평일에 보고 강의노트, 개념노트 미리 완성해놓기. 다행히 다짐했던 모든 투두리스트는 지켜냈다. 거창한 목표들이 아니라서 누가 봤을 때는 '당연히 할 수 있는 것들 아니야?' 라고 생각할지도 모르겠지만 큰 목표를 세우면 성공을 하지 못할 시에 (나는 나 자신을 믿지 않기 때문에 ㅎㅎ) 너무 큰 자책과 함께 우울한 기분이 들 것 같아서도 있고, 사소한 목표를 여러개 세워서 차라리 작은 성공들을 몇 개 만드는 것이 더 낫다고 생각했다. 사실 조금은 쉬고 싶은 마음도 있.. 2022. 9. 12.