본문 바로가기

코딩

(3)
뜯어 고치기 vs '2' 추가하기 이게 아닌데... 뭔가 잘못됐다. 높이가 40px인 공통 버튼 컴포넌트 를 만들었다. 하지만 알고 봤더니 높이가 40px이 아니라 28px이었다. 이미 수십 번 넘게 이곳저곳에서 쓰였던 상황이다. 당신은 어떤 선택을 해야 할까? A. 뜯어고치기 어차피 바뀌어야하는 것이다. 레이아웃이 깨지는 곳을 고치는 것은 매우 귀찮은 일이지만 어처피 해야 할 일을 하는 것일 뿐이다. 지금 고치지 않으면 점점 공수는 커져만 갈 것이다. 그래서 당신은 공통 버튼 컴포넌트를 수정하기로 결심했다. 선택의 결과 이제 당신에게 주어진 것은 버튼을 쓴 곳마다 레이아웃이 깨지는지 확인해야 하는 일이다. 아쉽게도 버튼은 주변 레이아웃에 많은 영향을 끼쳤다. 하단 푸터 버튼 영역의 height를 무심코 40px로 지정했었고, 15개의 ..
[리팩토링] 코드 숨기기, 가독성 좋은 코드 짜기 변수 추출(Extract Variable) 어떤 코드가 조금 보기 복잡해 졌다고 가정했을 때, 먼저 시도 해볼만한 것은 코드를 쪼개 변수로 나누는 것이다. 예를 들어 아래와 같이 부모와 자식의 값을 더하는 함수가 있다고 가정한다. 읽기 매우 난해할 것이다. 물론 함수명을 잘 지어도 좋지만, 여기서는 논외로 둔다. 각 값들을 변수로 쪼개면 아래와 같은 코드가 된다. 조금 더 알아보기 쉬운 코드가 됐다. 긴 코드들이 있었지만, 이 함수에서의 핵심 로직은 부모 값과 자식 값을 더한다는 것을 알 수 있게 됐다. 코드의 추상화 제멋대로 붙인말이지만, 뭔가 좀 있어보이게 말하자면, '코드의 추상화'라고도 할 수 있을 것 같다. 실제 데이터의 흐름은 app.store.data.parent.value + app.sto..
6/16 - 재밌는 실수 오늘 재밌는 실수가 하나 있었는데, 테스트의 필요성을 느낀 실수 였다. 먼저, 기존 코드에서는 특정 시각이 오전인지 오후인지를 구하고 있었다. 오전 오후를 구별하는 로직은 자주쓰일 가능성이 높기 때문에 나는 이 로직을 별도로 빼냈다. 별다른 타입오류도 발생하지 않았기에 안심하고 커밋&푸시를 했다. 그리고 시간이 좀 지났을까 채팅방에는 사진이 하나 올라왔다. 내가 짠 코드였다. 오전인지를 구하는 함수인데, 시간이 12시간보다 큰지를 반환하고 있었던 것이다. 테스트 코드의 중요성이 느껴지는 순간이었다. 만약에 테스트코드가 있었다면 오전 9시가 오후로 반환되는걸 미리 캐치해서 테스트를 통과하지 못했을 것이다. 그럼 왜 테스트가 실패했는지 확인했을 것이다. 그리고 나는 푸시 전에 바로, 오류를 확인하고 수정할 ..