티스토리 뷰

TIL

2020-06-09 TDD

Hoon1994 2020. 6. 9. 23:27

#TDD

 

 

TDD 스터디 중 축약 문법을 사용하여 최대한 짧게 작성한 함수와, 코드를 조금 길게 작성하더라도 

가독성을 위한 코드, 둘 중 무엇이 좋을까 의견을 나누어봤다.

 

의견을 나누어보니, 코드를 길게하더라도 성능 이슈가 크지 않다면 가독성을 높이는 게 더 좋겠다는 의견이 많았고,

요즘 컴퓨터 성능이 좋아지면서 크리티컬한 성능 문제가 있지 않을 경우 코드 길이를 조금 길게한다고 하여 

성능에 큰 이상을 줄 것 같지는 않아 가독성 있게 코드를 작성해보기로 했다. 

 

오늘 공부할 테스트 코드는 [평균 구하기]로, 배열을 전달받아 배열의 수를 모두 더한 후 평균을 구하는 코드다.

 

// 테스트 코드

import { solution } from "./평균구하기";

const array1 = [1, 2, 3, 4];
const array2 = [5, 5];
const array3 = [4, 5, 6, 7, 8];
const array4 = [1];

describe("평균구하기 테스트", () => {
  it("평균구하기", () => {
    expect(solution(array1)).toEqual(2.5);
    expect(solution(array2)).toEqual(5);
    expect(solution(array3)).toEqual(6);
    expect(solution(array4)).toEqual(1);
  });
});

 

// 테스트 통과 코드

export const solution = (arr) => {
   return arr.reduce((ac, cu) => ac + cu) / arr.length;
}

 

간단한 문제라서 그런지, 두줄로 끝나버렸다. 

스터디 중 의견을 나눌 때, reduce 같은 함수를 사용하거나, return 에서 모두 계산하게 할 경우 

가독성이 많이 떨어져서 이해하기 어렵다는 의견이 많이 나왔다. 

 

그래서, 가독성을 살리기 위해 코드를 개선해봤다.

 

export const arrTotal = (arr) => {
  return arr.reduce((ac, cu) => ac + cu);
}

export const solution = (arr) => {
  const sum = arrTotal(arr);
  const obj = {
    [sum]: (len) => {
      return sum / len;
    }
  }
  return obj[sum](arr.length);
}

 

더 어려워진 것 같다. 이건 아닌 거 같다. 무작정 길게 쓰려고 하다 보니 이상한 코드를 만든 것 같다. 

작동하긴 하지만.... 이건 더 수정해야겠다.

'TIL' 카테고리의 다른 글

2020-06-18 TIL  (0) 2020.06.18
2020-06-17 Node.js & MongoDB  (0) 2020.06.17
2020-06-04 TDD & NodeJs  (0) 2020.06.04
2020-06-03 TDD Refactoring & Passport  (0) 2020.06.03
2020-06-02 TDD 입문  (0) 2020.06.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함