코드 냄새 157 - 균형 0

오늘 나는 지갑에서 지불을 기대했습니다. 잔액은 0이었습니다. 나는 당황했습니다.

TL;DR: Null is not 0. Error is not 0. just 0 is 0.



문제


  • UX
  • 유용성

  • 솔루션


  • 0과 오류를 명확하게 구분하십시오.

  • 문맥



    보안 문제에 대해 많이 읽었습니다.

    특히 암호화폐에서요.

    지난 주에 나는 .

    내 지갑에 잔액이 0으로 표시되었을 때 나는 당황했습니다.

    그것은 단지 UX 냄새였습니다.

    블록체인에 연결할 수 없습니다 💩

    샘플 코드



    잘못된




    """
    Below code is automatically generated by code-davinci-002 on GTP3 Codex
    
    1. check balance with blokchain
    2. If blockchain is unreachable show 0 as the balance
    """
    
    import requests
    import json
    
    def get_balance(address):
        url = "https://blockchain.info/q/addressbalance/" + address
        response = requests.get(url)
        if response.status_code == 200:
            return response.text
        else:
            return 0      
    
    
    
    

    오른쪽



    """
    Below code is automatically generated by code-davinci-002 on GTP3 Codex
    
    1. check balance with blockchain
    2. If blockchain is unreachable throw an error
    """
    
    import requests
    import json
    
    def get_balance(address):
        url = "https://blockchain.info/q/addressbalance/" + address
        response = requests.get(url)
        if response.status_code == 200:
            return response.text
        else:
            raise BlockchainNotReachableError("Error reaching blockchain")
    

    발각



    [X] 수동

    이것은 디자인 냄새입니다.

    or가 던져지고 0으로 가려지면 패턴을 찾을 수 있습니다.

    태그


  • UX

  • 결론



    항상 The Least Astonishment principle를 가이드로 따르십시오.

    처지





















    더 많은 정보






    신용 거래



    사진 제공: Jasmin Sessler on Unsplash

    부인 성명



    코드 냄새는 그냥 내 .

    My real criticism with Null is that it brings back again unnecessarily all the agony of having to choose whether to run your program fast without checking or run it slow with checking.



    Tony Hoare(무효 발명가)






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


    좋은 웹페이지 즐겨찾기