Skip to content

Commit

Permalink
평균 계산 함수 리팩토링 및 테스트 추가
Browse files Browse the repository at this point in the history
- sum 함수를 재귀 함수로 변경하여 arr.length를 size 함수로 추출
- average 함수에서 sum 함수를 호출하도록 변경
- average 함수에 대한 테스트 코드 작성 및 검증
  • Loading branch information
jihwooon committed Jun 3, 2024
1 parent c20edfd commit 1bed665
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 11 deletions.
18 changes: 10 additions & 8 deletions src/ch01/average.test.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
const average = (arr: number[]) => {
let answer = 0;
const size = (arr: number[]) => arr.length;

for (let i = 0; i < arr.length; i++) {
answer += arr[i];
}
const sum = (arr: number[], index = 0) => (index === arr.length ? 0 : arr[index] + sum(arr, index + 1));

return answer / arr.length;
};
// 높은 수준의 추상화과 낮은 수준의 코드이면 동일한 추상화를 한다.
const average = (arr: number[], answer: number = 0) => sum(arr) / size(arr);

console.log(average([1, 2, 3, 4, 5])); // 결과값 : 3
describe('average', () => {
it('배열의 합의 평균값을 반환한다.', () => {
expect(average([1, 2, 3, 4, 5]))
.toBe(3);
});
});
9 changes: 6 additions & 3 deletions src/ch01/sum.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
describe('sum', () => {
it('두 수가 주어지면 합의 결괏값을 리턴해야 한다.', () => {
expect(1 + 2).toBe(3);
const sumValue = (a: number, b: number) => a + b;

describe('sumValue', () => {
it('두 수가 주어지면 합의 결과값을 리턴해야 한다.', () => {
expect(sumValue(1, 2))
.toBe(3);
});
});

0 comments on commit 1bed665

Please sign in to comment.