Software Lab

어떤 이터레이터를 사용해야 하나? 본문

코드 리펙토링

어떤 이터레이터를 사용해야 하나?

아임코더 2022. 6. 28. 16:36
const array = [1, 2, 3, 4]

이터레이터는 여러가지 종류가 있다. 모두 기능이 비슷해 보이지만, 분명한 차이가 있다.

그것들을 이해하고 목적에 맡게 사용해야 한다. 위의 array에 대해 각각의 이터레이터를 사용해 보자.

 

for(let i = 0; i < array.length; ++i){

    console.log(array[i])

    if(array[i] == 3)
        break;
}

<Index read : O, Index write : O, break :O>

 

for(const i in array){

    console.log(array[i])
    
    if(array[i] == 3)
        break
}

<Index read : O, Index write : X, break : O>

 

for(const v of array){

    console.log(v)
    
    if(v == 3)
        break
}

<Index read : X, Index write : X, break : O>

 

array.some(v => {

    console.log(v)

    return (v == 3)
})

<Index read : X, Index write : X, break : O>

 

array.forEach(v => console.log(v))

<Index read : X, Index write : X, break : X>

 

 

  • index read : index를 읽을 수 있는 기능이 있다. 예를 들어 "7의 배수의 index에 해당하는 값은 3을 곱해라"와 같은 처리가 필요하다면 해당 기능이 있는 Iterator를 사용해야 한다.
  • index write : index를 수정할 수 있는 기능이 있다. 예를 들어 "index가 5라면 10으로 건너뛰겠다"와 같은 처리가 필요하다면 해당 기능이 있는 Iterator를 사용해야 한다.
  • break : Iterator 중간에 빠져나갈 수 있다, 예를 들어 "값이 5이면 빠져나가라" 와 같은 처리가 필요하다면 해당 기능이 있는 Iterator를 사용해야 한다.


기능을 많이 제공하는 이터레이터일수록 가독성은 떨어진다. 기능을 많이 제공할수록 그것들의 사용 가능성을 염두에 두면서 코드를 해석해야 하기 때문이다. 목적하는 동작을 할 수 있다면, 가능한 적은 기능을 제공하는 이터레이터를 사용하여 가독성을 높인다.

'코드 리펙토링' 카테고리의 다른 글

토글  (0) 2022.06.29
삼항 연산자  (0) 2022.06.29
필수 변수는 생성자 함수를 통하여  (0) 2022.06.28
try 블록 범위  (0) 2022.06.28
null 인자는 함수 외부에서 처리  (0) 2022.06.24
Comments