웹개발자공부/Failure note
불필요한 변수 및 연산 삭제를 통한 소스코드 가독성 개선
박더그
2022. 9. 28. 13:55
-목표-
값을 입력하면 1에서부터 해당 값 사이 소수의 합을 출력합니다.
-의도한 풀이 방법-
1. for문을 사용하여, 1부터 입력값 사이의 소수를 추출합니다.
2. 추출된 소수를 빈 배열에 담습니다.
3. 배열에 담겨진 수들을 모두 합합니다.
4. 결과값을 출력합니다.
-초기 작성 코드-
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
|
function sumPrime(n) {
let sum = 0;
//소수의 합을 누적시킬 변수 선인
let arr = [];
//소수를 담을 빈 배열 선언
for (let i = 2; i <= n; i++) {
let count = 1;
/*소수 판변을 위한 count를 선언,
count가 2가 되면 소수, 1또는 3이상이면 소수가 아님*/
for (let j = 2; j <= i; j++) {
if (i % j === 0) {
count = count + 1;
}
}
if (count === 2) {
arr.push(i);
//count가 2인 j값(소수)를 arr에 담음
}
}
for (let i = 0; i < arr.length; i++) {
sum = sum + arr[i];
//소수로 이루어진 배열 arr를 돌며 sum에 누적시킴
}
return sum;
//소수의 합계를 반환
}
|
cs |
-검토-
완성은 되었으나 가독성이 매우 떨어집니다.
불필요한 변수 및 연산의 개선이 필요해보입니다.
-수정 코드-
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
function sumPrime(n) {
let sum = 0;
//소수의 합을 누적시킬 변수 선인
for (let i = 2; i <= n; i++) {
let count = 1;
/*소수 판변을 위한 count를 선언,
count가 2가 되면 소수, 1또는 3이상이면 소수가 아님*/
for (let j = 2; j <= i; j++) {
if (i % j === 0) {
count = count + 1;
}
}
if (count === 2) {
sum = sum + i;
//소수의 합을 sum에 누적시킴
}
}
return sum;
//소수의 합계를 반환
}
|
cs |
-수정 내용-
1. 소수를 담을 배열 삭제
2. 소수로 판별되면 해당 값을 바로 소수 합에 누적
-개선 결과-
1. 불필요한 변수를 삭제하여 메모리 할당을 줄였습니다.
(아주 미비하지만😁)
2. 전체적인 줄 수가 줄어들어 가독성이 개선되었습니다.