티스토리 뷰

# 진도 기본 미션 선택 미션
3주차
(7/18 ~ 7/24)
Chapter 04 비파괴적 처리와 파괴적 처리의 의미와 장단점 설명하기  p.173 확인문제 3번 문제 풀고 풀이과정 설명하기

 

[기본미션]

비파괴적 처리와 파괴적 처리의 의미와 장단점 설명하기 

 

○ 비파괴적 처리: 처리 후 원본 값의 상태가 변하지않는 처리

○ 파괴적 처리: 처리 후 원본 값의 상태가 변하는 처리

 

장단점:

책에 나와있는 대로라면..

파괴적 처리의 장점: 메모리를 절약

파괴적 처리의 단점: 데이터 보호 못함

 

비파괴적처리의 장점: 데이터 보호

비파괴적처리의 단점: 메모리 소모

 

개인적 의견으로는..

<비파괴적 처리의 장점: 프로그래밍에 도움을 줌>

비파괴적 처리를 함으로써 프로그래밍 함에 있어 좀 덜 생각해도 됨.

예를 들어, 뭔가 프로그램이 의도와 맞지않게 실행되는것 같아 디버깅하고자 한다면

파괴적 처리로 로직을 구성했다면 모든 로직에서 해당 자료형이 어떤 형태로 변하는지

머리로든, IDE의 도움을 받든 변화를 감지하고 있어야함.

비파괴적 처리로 구성한 부분이라면 해당 부분을 로그나 표준출력으로 어떤 상태인지 보고

점점 범위를 좁혀 디버깅을 할 수 있음.

캐싱 같은 느낌으로 쓰든, 원본을 두고 파생 변수들로 필요한 만큼 가공을 할때 쓸 수도 있고

생각을 좀 덜 하게 만들어줌.

 

<비파괴적처리의 단점: 메모리 소모(부연설명)>

다만, 위에 언급된 메모리 소모의 단점은 확실히 대용량 데이터를 다룰 때 나타남.

한정된 메모리 자원에 로드할 데이터는 많고 이 데이터를 처리하는 함수를 통과 할 때마다

임시적인 복사든 뭐든 간에 그 순간에는 메모리가 데이터+자료형 만큼 소모됨.

그런 열악한 환경이라면 프로그래밍의 태도 자체가 바뀌어야함.

편한 것 보단 자원을 아끼는 방향으로 최대한 최적화 되어야 함.

 

[선택미션]

3-① : 비파괴적 처리 

설명: strA 가 split(',') 을 실행한 직후에도 변하지 않았다. 

이는 split() 메소드가 원본 strA로 부터 복사해 array를 리턴하는 비파괴적 메소드 이기 떄문이다.

 

3-② : 파괴적 처리

설명: push 메소드를 통해 원본 arrayB에 '감'을 추가하는 작업이 있었다.

이를 통해 arrayB의 상태가 변했다. 그래서 파괴적 처리

 

3-③ : 비파괴적 처리

설명: map() 메소드는 array의 각 원소에 명시한 함수를 각각 적용하고 그 결과 array를 리턴하는 작업을 한다.

각 원소를 x라 명하고 x * x 로 자기 자신의 제곱을 한 수를 각 배열에 저장. 이 결과를 리턴하는데

이 과정에서 원본값을 손상시키거나 원본 arrayC에 덧씌워지지않는다.

 

3-④ : 비파괴적 처리

설명; trim() 메소드는 strD 에서 양 옆 공백을 없애고 그 결과값을 리턴한다.

이 과정에서 원본값을 손상시키지않는다. 그렇기에 비파괴적 처리이다.