더 나은 코딩 방법/Python/Part-1

14384 단어 codereviewspython

소개



코드 검토는 개발자의 일상 생활에서 없어서는 안될 부분입니다. 엄청난 양의 코드 리뷰 댓글을 받는 것은 많은 문제가 있지만 가장 중요한 것은 개발자의 자존심을 상하게 한다는 것입니다! 이 기사가 도움이 되셨기를 바랍니다.

Disclaimer: This blog does not claim to be one-and-only solution for all coding problems. Apart from some adopted community guidelines everything is subjective to the coder or reviewer. This is merely my opinions and compiled list of bad coding practices I've found through my experience. All the code examples are made to demonstrate a single problem at a time.



1. 변수 이름



나쁜




temp = {"banana": "yellow", "apple": "red", "grape": "green"}
list1 = []
list2 = []

for k, v in temp.items():
    list1.append(k)
    list2.append(v)

print(f"fruits: {list1}")
print(f"colors: {list2}")


좋은




fruit_colors = {"banana": "yellow", "apple": "red", "grape": "green"}
fruits = []
colors = []

for fruit, color in fruit_colors.items():
    fruits.append(fruit)
    colors.append(color)

print(f"fruits: {fruits}")
print(f"colors: {colors}")


장점


  • 코드 가독성
  • 버그가 덜 발생함

  • 2. 예외 처리



    나쁜




    try:
        fruit_colors = {"banana": "yellow", "apple": "red", "grape": "green"}
        color = fruit_colors["watermelon"]
    except Exception:
        print("Failed to get color of watermelon :(")
    


    좋은




    fruit_colors = {"banana": "yellow", "apple": "red", "grape": "green"}
    try:
        color = fruit_colors["watermelon"]
    except KeyError:
        print("Failed to get color of watermelon :(")
    


    장점


  • 코드 가독성
  • 손쉬운 문제 해결

  • 3. 표준 라이브러리 활용



    나쁜




    fruits = ["apple", "banana", "grape"]
    
    i = 0
    for fruit in fruits:
        print(f"{i}: {fruit}")
        i += 1
    


    좋은




    fruits = ["apple", "banana", "grape"]
    
    for i, fruit in enumerate(fruits):
        print(f"{i}: {fruit}")
    


    장점


  • 컴팩트

  • 4. 오류 로깅



    나쁜




    try:
        res = requests.get("https://www.google.com")
        res.raise_for_status()
        logging.info("Success!")
    except Exception as e:
        logging.error(f"Unexpected error occured: {e}")
    


    좋은




    try:
        res = requests.get("https://www.google.com")
        res.raise_for_status()
        logging.info("Success!")
    except HTTPError as err:
        logging.error(
            f"Request failed with status code: {err.response.status_code}"
        )
    except Exception:
        # logging.exception logs traceback information
        logging.exception("Unexpected error occured:")
    


    장점


  • 코드 가독성
  • 손쉬운 문제 해결

  • 5. 댓글 차단



    나쁜




    username = username.lower()
    username = username.strip()
    username = re.sub(r"\s+", "", username)
    if not re.match(r"^[a-zA-Z0-9_]{5,20}$", username):
        print("Invalid username")
        exit(1)
    


    좋은




    # Perform string transforms on the username
    username = username.lower()
    username = username.strip()
    username = re.sub(r"\s+", "", username)
    
    # Check if username is valid
    if not re.match(r"^[a-zA-Z0-9_]{5,20}$", username):
        print("Invalid username")
        exit(1)
    


    장점


  • 코드 가독성

  • 결론



    이 블로그는 시리즈의 일부이며 이러한 각 요점은 몇 가지 고급 시나리오로 확장될 수 있습니다. 불행히도 하나의 블로그에서 모든 시나리오를 언급할 수 없으므로 향후 부분에서 다른 사례를 다루도록 노력할 것입니다. 질문, 개선 사항에 대한 제안 또는 발견한 좋은 코딩 방법이 있으면 언제든지 문의하세요.

    내 블로그의 게시물 참조: https://alacrity.dev/better-coding-practices-python-part-1/

    좋은 웹페이지 즐겨찾기