Code Smell 53 - 명시적 반복

우리는 학교에서 루프를 배웠습니다. 그러나 열거자와 반복자는 차세대입니다.

TL;DR: Don't use indices while iterating. Prefer Higher level collections.



문제


  • 캡슐화
  • 선언성

  • 솔루션


  • foreach() 또는 상위 반복자를 선호합니다
  • .
  • 구현 세부 정보를 숨길 때 yield(), 캐시, 프록시, 지연 로드 등을 사용할 수 있습니다.

  • 샘플 코드



    잘못된




    for (i = 0; i < colors.count(), i++) {
      print(colors[i]);
    }
    

    오른쪽



    foreach (color of colors) {
      print(color);
    }
    
    //Closures and arrow functions
    colors.foreach(color => print(color));
    

    발각



    린터는 정규식을 사용하여 이 냄새를 찾을 수 있습니다.

    잘못된 긍정이 있을 수 있습니다. 아래 예외를 참조하십시오.

    예외



    문제 영역에서 인덱스와 같은 자연수로 전단될 요소가 필요한 경우 첫 번째 솔루션이 적합합니다.

    실제 세계의 비유를 찾기 위해 항상 기억하십시오.





    태그


  • 선언적

  • 결론



    이런 종류의 냄새는 미묘하다고 생각하기 때문에 많은 개발자에게 종을 울리지 않습니다.

    클린 코드는 차이를 만들 수 있는 몇 가지 선언적인 요소로 가득 차 있습니다.

    처지






    더 많은 정보






    학점



    사진 제공: Elena Mozhvilo on Unsplash


    If you get tired of writing for loops, take a break and continue later.



    데이비드 워커








    @의 원본 트위터 스레드









    매트 몰









    C#Each에서 목록을 반복하는 3가지 간단한 방법에는 사용 사례가 있습니다. 어떤 것을 선호하십니까? 그리고 왜? 👇


    오후 20:36 - 2021년 1월 4일











    이 기사는 CodeSmell 시리즈의 일부입니다.




    마지막 업데이트: 2021/06/13

    좋은 웹페이지 즐겨찾기