[SI] 프로젝트 4주차

소복치·2024년 7월 28일

벌써 프로젝트 기간이 한달이 되어갔다.
들어와서 하루하루 모르는 용어를 정리하며, consensus를 맞춰가고 업무의 이해도를 파악하느라
정신없는 시간을 보낸거 같다.
산출물의 끝이 이제 보였고 마무리 단계는 PM님과 PL님이 해주셨다.

나머지 팀원들은 개발을 시작하기전 서로간의 코드 표준을 정하고 공통모듈 사용하기 위해 의견을 모았다.

우리가 사용할 언어는 Python 이다.
이번 주차는 Python PEP 8 style 가이드공통모듈에 대해 알아볼 것이다.

Python PEP 8 style

PEP 8 은 파이썬 프로그래밍 언어의 코딩 스타일 가이드라인을 정의한 문서로 코드의 가독성을 향상시키기 위해 따라야 할 규칙과 권장 사항을 제시한다.

PEP는 Python 개선 제안의 약자로 Python이나 그 프로세스 또는 환경에 대한 새로운 기능이나 규칙을 제안하는 문서이다.
그중 PEP 8은 Python 프로그래밍 언어의 코딩 스타일 가이드라인을 정의한 문서로 코드의 가독성을 향상시키기 위해 따라야 할 규칙과 권장 사항을 제시하고 있다.

[PEP-8 style 핵심]

1. 들여쓰기(Indentation)

탭(tab)을 사용하지 말자. 공백(whitespace) 4개를 사용하자.

# 적절한 들여쓰기 방법

def foo():
	if x == 1:
    	x += 1
    else:
    	x -= 1
        
# 적절하지 않은 들여쓰기 방법 

def foo():
	if x == 1:
   	 x += 1
    else:
    	x -= 1
        
# 들여쓰기에 탭을 사용한 경우

def baz():
    if x == 1:
        x += 1
    else:
        \tx -= 1

2. 최대 줄 길이 (Line length)

PEP8에서는 한 줄의 최대 길이를 79자로 제한하자.

# 한 줄이 79자 이하인 경우

def foo():
    long_string = "This is a very long string that fits within the 79 character limit."
 
# 한 줄이 79자를 넘는 경우

def bar():
    long_string = "This is a very long string that exceeds the 79 character limit. " \
                  "To make it more readable, it is split into multiple lines."
 
# 괄호 안에서의 줄 바꿈

def baz():
    result = (a + b +
              c + d +
              e + f)
 
# 연산자 앞이나 뒤에서의 줄 바꿈

def qux():
    result = a + b + \
             c + d + \
             e + f

3. 공백 (Whitespace)

코드의 가독성을 높이기 위해 공백(Whitespace)을 적절하게 사용하자

# 들여쓰기에는 항상 공백 4개를 사용

def foo():
    if x == 1:
        x += 1
    else:
        x -= 1
 
# 키워드와 괄호 사이, 콜론과 문장 사이, 연산자와 피연산자 사이에는 항상 공백을 사용

def bar(x, y, z):
    if x > 0 and y > 0:
        z += x + y
    else:
        z -= x - y
 
# 함수나 메서드의 인자 목록에서 각 인자 사이에는 항상 공백을 사용

def baz(a, b, c):
    pass
 
# 괄호 안쪽이나 대괄호 안쪽, 중괄호 안쪽에서는 불필요한 공백을 사용하지 않음

lst = [1, 2, 3]
dct = {'key': 'value'}
if x in lst:
    pass
if 'key' in dct:
    pass
 
# 파일의 끝에는 빈 줄을 추가

4. 주석 (Comments)

주석(Comments)을 적절하게 사용하여 코드의 가독성을 높이자

# 코드에 대한 주석은 한 줄로 작성하며, # 문자로 시작

x = 5  # 변수 x에 정수 5를 할당합니다.
 
# 주석은 코드의 의도를 설명하는 데 사용되며, 코드 자체에 대한 설명을 하지 않아야 함

if x > 0:
    x -= 1  # x가 양수인 경우 1을 뺍니다.
 
# 함수나 메서드의 docstring은 세 개의 따옴표로 둘러싸여 작성되어야 함

def foo():
    """This function does something."""
 
# 주석이 코드와 같은 줄에 작성하기 어려운 경우, 주석을 코드에서 한 칸 이상 떨어진 위치에 작성할 수 있음

def bar():
    result = x + y  # x와 y를 더한 결과를 계산합니다.

5. 네이밍 컨벤션 (Naming conventions)

네이밍 컨벤션(Naming conventions)을 일관되게 적용하여 코드의 가독성을 높이자

# 변수, 함수, 메서드의 이름은 소문자로 작성하며, 여러 단어일 경우에는 밑줄로 구분

my_variable = 5
 
def my_function():
    pass
 
class MyClass:
    def my_method(self):
        pass
 
# 모듈의 이름은 소문자로 작성하며, 여러 단어일 경우에는 밑줄로 구분

import my_module
 
# 상수의 이름은 모두 대문자로 작성하며, 여러 단어일 경우에는 밑줄로 구분

MY_CONSTANT = 10

6. 임포트 (Imports)

임포트(Imports)를 적절하게 사용하여 코드의 가독성을 높이자

# 모듈을 임포트할 때에는 항상 모듈의 전체 이름을 사용

import math
 
# 여러 개의 모듈을 임포트할 때에는 각 모듈을 새 줄에 작성

import os
import sys
 
# 임포트 문의 순서는 알파벳 순서대로 작성

import numpy
import pandas
 
# 모듈에서 함수나 클래스를 임포트할 때에는 모듈의 전체 이름을 사용하는 것보다는 함수나 클래스의 이름만을 사용

from math import sqrt
 
# 함수나 클래스의 이름이 충돌할 가능성이 있는 경우에는, 모듈의 이름을 앞에 붙여서 사용

import numpy as np

7. 문자열 인용 (String quotes)

작은따옴표(')와 큰따옴표(") 중에서 어느 것을 사용해도 상관없지만, 일관성 있는 방법으로 작성하자

# 문자열에 따옴표가 포함된 경우, 문자열을 감싸는 따옴표와 다른 종류의 따옴표를 사용

print("It's a beautiful day")
 
# 긴 문자열은 여러 줄로 나눠 작성

long_string = ("This is a long string that can be split over multiple lines "
               "without using the newline character.")
 
# 문자열 포맷팅을 사용하는 것을 추천

name = "Alice"
age = 25
print("My name is {} and I am {} years old.".format(name, age))

8. 표현식과 문장 (Expressions and statements)

표현식과 문장(Expressions and statements)을 적절하게 사용하여 코드의 가독성을 높이자

# 각 문장은 가능한 한 짧게 작성

x = 5
y = x + 2
 
# 한 줄에 두 개 이상의 문장을 작성하는 경우, 세미콜론으로 구분할 수 있지만, 가독성을 위해 가능한 한 한 줄에 하나의 문장만 작성

x = 5; y = x + 2
 
# 문장의 끝에는 세미콜론을 사용X

x = 5
y = x + 2
 
# 조건문과 반복문에서, 한 줄에 하나의 문장만 작성

if x > 0:
    y = x + 1
 
for i in range(10):
    print(i)
 
 
# 긴 표현식은 여러 줄로 나눠 작성

result = (x * y * z
          + x * y * w
          + x * z * w
          - z * w * y)

여기까지 코드 표준에 대해 알아봤다.

우리는 위에 가이드 라인중

  • 들여쓰기
  • 최대 줄 길이
  • 공백
  • 네이밍 컨벤션
  • 표현식과 문장

이외 필요한 규칙이 생긴다면 추후에 사용하면서 추가 및 수정 하고 위와같이 5가지는 지키기로 약속했다.

그저 다들 그렇게 쓰니까 그런가 보다 하고 작성했던 코드가 알고보니 약속된 가이드라인이 있었다는 사실에 놀라웠다.

이러한 부분을 모르고 계속해서 코딩을 해왔더라면?
나중에 나는 Python 언어로 코딩을 할 줄 안다고 말할 수 없었을꺼같다.

이 내용을 접하면서 앞으로도 꾸준한 공부와 관심이 필요해 보인다고 생각했다.
언젠가 내가 Python 언어로 개발 할 줄 안다고 자신있게 말할 수 있는 그날까지 파이팅이다!

(코드 표준 내용이 길어져 공통모듈에 관한 내용은 다음 글에 이어서 작성 할 것이다.)

profile
오늘 터져도내일 다시극복

0개의 댓글