함수와 클래스 이름 짓는 법
프롬프트 영역으로 마우스를 옮기고 Copy 버튼을 누르면 클립보드에 프롬프트의 내용이 복사됩니다.마이크로파이썬으로 코딩할 때 함수 이름과 클래스 이름을 잘 짓는 방법을 알려줘.
AI가 만든 결과
마이크로파이썬(MicroPython)에서 함수와 클래스를 작성할 때도, 일반 파이썬의 네이밍 컨벤션(PEP 8)을 기본적으로 지키는 것이 바람직합니다. 다만, 임베디드 환경에서 동작하므로 메모리와 코드 길이에 대한 제약이 있을 수 있으니, 이름을 지나치게 길게 쓰는 것은 피하는 것이 좋습니다. 아래는 함수 이름과 클래스 이름을 잘 짓는 방법에 대한 가이드입니다.
1. 함수 이름(FUNCTION NAMES)
1.1. snake_case 스타일
- 파이썬에서는 함수 이름을 모두 소문자로 작성하고, 단어 사이에는 밑줄(
_
)을 사용하는snake_case
표기를 권장합니다.
예)read_sensor_data()
setup_network()
calculate_crc()
1.2. 의미가 담긴 짧은 이름
- 주요 동작을 설명하는 동사 + 대상 명사 형태로, 함수가 어떤 동작을 하는지 한눈에 알 수 있는 이름을 사용합니다.
예)init_display()
send_command()
- 너무 긴 이름은 자제
예)initialize_temperature_sensor_with_default_configuration()
보다는init_temp_sensor()
정도로 축약.
1.3. 메모리·성능 제약 고려
- 함수명이 길면 코드 사이즈가 불필요하게 커질 수 있습니다.
- 짧되 모호하지 않도록, 주석을 통해 설명을 보충하는 방법을 사용하세요.
예)def wr_sensor(): """ Write data to the sensor via I2C. """ ...
1.4. 일관성 유지
- 프로젝트 전반에 걸쳐 동일한 스타일을 유지해야 합니다.
예)get_data()
,set_data()
,reset_data()
식으로 동사+명사를 일관되게 구성- 센서와 관련된 함수라면
sensor_
라는 접두사를 붙이는 등
2. 클래스 이름(CLASS NAMES)
2.1. PascalCase(UpperCamelCase) 스타일
- PEP 8에서는 클래스를 정의할 때, 각 단어의 첫 글자를 대문자로 표기하는 ‘PascalCase’(혹은 UpperCamelCase) 방식을 권장합니다.
예)MyClass
,SensorManager
,NetworkHandler
2.2. 역할이 드러나는 이름
- 클래스 이름만 보고도 해당 클래스가 어떤 역할을 하는지 알 수 있어야 합니다.
예)ButtonController
,LedDriver
,I2CCommunicator
- 너무 구체적이거나 긴 이름은 피하세요.
예)AutomaticTemperatureAndHumiditySensorManager
보다는TempHumiditySensor
정도로 간결하게.
2.3. 모듈·패키지 구조와의 연관성
- 클래스 이름은 모듈, 패키지 이름과 잘 어울리도록 짓습니다.
예)- 모듈
network
안에NetworkManager
클래스가 존재한다면 자연스럽게 매칭
- 모듈
- MicroPython처럼 코드가 비교적 간결한 환경에서는 클래스나 모듈이 복잡해지는 것을 피하고, 적절히 분할하는 것이 중요합니다.
2.4. 상속·확장 시 일관성
- 상속 관계를 고려해, 부모 클래스와 자식 클래스 이름에 유의하세요.
예)BaseSensor
→TemperatureSensor
,PressureSensor
DisplayDriver
→OledDriver
,LcdDriver
3. 코드 예시
아래는 MicroPython 환경에서 자주 볼 수 있는 센서 제어 관련 예시 코드입니다.
# sensor_manager.py class SensorManager: """ 센서 초기화, 데이터 읽기 등을 담당하는 클래스 """ def __init__(self, i2c): self.i2c = i2c def init_sensors(self): """ 센서를 초기화하는 함수 """ # 센서 초기화 로직 pass def read_temperature(self): """ 온도 센서 데이터 읽기 """ temp = 0 # I2C 통신으로 센서 값 읽기 return temp def read_humidity(self): """ 습도 센서 데이터 읽기 """ humidity = 0 # I2C 통신으로 센서 값 읽기 return humidity def main(): """ 메인 루프 예시 """ from machine import I2C i2c = I2C(0) sensor_manager = SensorManager(i2c) sensor_manager.init_sensors() temp = sensor_manager.read_temperature() print("Temperature:", temp) hum = sensor_manager.read_humidity() print("Humidity:", hum) # main()가 직접 호출되지 않도록 하고, import 후에 호출하거나 # if __name__ == "__main__": 조건에서 호출하는 방식을 사용
- 위 예시에서 클래스를
SensorManager
로 명명하고, 함수는snake_case
로 작성했습니다. - 함수 이름을
init_sensors()
,read_temperature()
등으로 하여, 동작을 직관적으로 표현했습니다.
4. 정리
함수 이름(Function Names)
- 소문자와 밑줄(
_
)을 사용하는snake_case
- 기능을 짧고 명확하게 표현(동사+명사 조합 권장)
- 너무 길지 않게, 필요한 설명은 주석으로 보충
- 소문자와 밑줄(
클래스 이름(Class Names)
- 각 단어의 첫 글자를 대문자로 하는
PascalCase
- 클래스의 역할이 드러나는 간결한 이름
- 상속·모듈과의 구조적 일관성 고려
- 각 단어의 첫 글자를 대문자로 하는
MicroPython 환경 특성 고려
- 메모리와 코드 크기의 제약이 크므로, 불필요하게 긴 이름은 지양
- 짧고 일관성 있는 이름을 짓고, 필요한 설명은 주석으로 보완
- 전체 코드 구조를 단순화하여, 클래스나 함수가 너무 비대해지지 않도록 유지
이러한 원칙들을 지키면 MicroPython 환경에서도 가독성이 높고 유지보수하기 쉬운 코드를 작성할 수 있습니다.