코드 냄새 140 - 단락 평가

첫 번째 프로그래밍 과정에서 단락을 배웁니다. 우리는 그 이유를 기억해야 합니다.

TL;DR: Be lazy when evaluating boolean conditions



문제


  • 부작용
  • 이절 결함
  • 성능 문제

  • 솔루션


  • 전체 평가 대신 단락 회로를 사용합니다
  • .

    문맥



    우리는 101개의 컴퓨터 과정에서 부울을 배웁니다.

    부울의 진리표는 수학에 적합하지만 소프트웨어 엔지니어링으로서 더 지능적이어야 합니다.

    단락 평가는 우리가 게을러지고 유효하지 않은 전체 평가를 구축하는 데 도움이 됩니다.

    샘플 코드



    잘못된




    <?
    
    if (isOpen(file) & size(contents(file)) > 0)
      // Full evaluation 
      // Will fail since we cannot retrieve contents 
      // from not open file
    

    오른쪽



    <?
    
    if (isOpen(file) && size(contents(file)) > 0)
      // Short circuit evaluation 
      // If file is not open it will not get the contents  
    

    발각



    [X] 자동

    개발자가 전체 평가를 사용할 때 경고할 수 있습니다.

    태그


  • 부울

  • 예외



    IF 대안으로 단락을 사용하지 마십시오.

    피연산자에 부작용이 있는 경우 이는 또 다른 코드 냄새입니다.

    결론



    대부분의 프로그래밍 언어는 단락을 지원합니다.

    그들 중 많은 사람들이 그것을 유일한 옵션으로 가지고 있습니다.

    우리는 이러한 종류의 표현을 선호해야 합니다.

    처지











    더 많은 정보


  • Wikipedia



  • Writing a class without its contract would be similar to producing an engineering component (electrical circuit, VLSI (Very Large Scale Integration) chip, bridge, engine...) without a spec. No professional engineer would even consider the idea.



    버트런드 메이어






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


    좋은 웹페이지 즐겨찾기