Python/Clean Code Series(클린코드)
-
소프트웨어 설계에서 중요한 SOLID 원칙을 FastAPI와 Python을 활용해 어떻게 적용할 수 있는지 알아보겠습니다. 🚀SOLID는 로버트 C. 마틴(일명 "Uncle Bob")이 제안한 5가지 설계 원칙으로, 코드를 더 깔끔하고 유지보수하기 쉽도록 도와줍니다. 특히 객체 지향 프로그래밍과 API 개발에서 빛을 발하죠. ✨ 이 글에서는 온라인 서점의 도서 재고 관리 API를 예제로 삼아 각 원칙을 하나씩 살펴보겠습니다. 이미 FastAPI로 API를 만들어 본 경험이 있는 분들을 위해, 기초적인 설명은 건너뛰고 실전 적용에 집중하겠습니다. 💡 그럼 시작해볼까요? 💨📚 예제 시나리오: 온라인 서점 재고 관리 시스템우리가 만들 API는 온라인 서점에서 도서를 관리하는 시스템입니다. 이 API는 ..
FastAPI와 함께하는 SOLID 원칙: Python으로 깔끔한 코드 작성하기소프트웨어 설계에서 중요한 SOLID 원칙을 FastAPI와 Python을 활용해 어떻게 적용할 수 있는지 알아보겠습니다. 🚀SOLID는 로버트 C. 마틴(일명 "Uncle Bob")이 제안한 5가지 설계 원칙으로, 코드를 더 깔끔하고 유지보수하기 쉽도록 도와줍니다. 특히 객체 지향 프로그래밍과 API 개발에서 빛을 발하죠. ✨ 이 글에서는 온라인 서점의 도서 재고 관리 API를 예제로 삼아 각 원칙을 하나씩 살펴보겠습니다. 이미 FastAPI로 API를 만들어 본 경험이 있는 분들을 위해, 기초적인 설명은 건너뛰고 실전 적용에 집중하겠습니다. 💡 그럼 시작해볼까요? 💨📚 예제 시나리오: 온라인 서점 재고 관리 시스템우리가 만들 API는 온라인 서점에서 도서를 관리하는 시스템입니다. 이 API는 ..
2025.02.20 -
왜 클린 코드가 중요한가요?클린 코드는 단순히 "잘 보이는 코드"를 넘어, 협업의 효율성을 높이고 유지보수를 쉽게 만들어줍니다. 가독성이 높은 코드는 버그를 줄이고, 코드 리뷰 시간을 단축하며, 새로운 개발자가 프로젝트에 빠르게 적응할 수 있도록 도와줍니다. 프로덕션 환경에서는 특히 코드의 명확성과 일관성이 중요한데, 이는 시스템의 안정성과 직결되기 때문입니다. 지금까지 제 프로그래밍 경험상 클린 코드는 습관입니다.평소에 클린코드에 대한 지식을 리마인드하고 지속적으로 코딩 실력을 다져줘야합니다.아래의 글도 같이 보시고 리마인드해보세요. [Python/Clean Code Series(클린코드)] - 파이썬 클린코드 기본 파이썬 클린코드 기본클린 코드는 여러가지 측면이 있지만, 그 중에서도 다른 사람이 쉽게..
[Python/Clean Code Series(클린코드)] 12가지 프로덕션급 Python 클린 코드 스타일왜 클린 코드가 중요한가요?클린 코드는 단순히 "잘 보이는 코드"를 넘어, 협업의 효율성을 높이고 유지보수를 쉽게 만들어줍니다. 가독성이 높은 코드는 버그를 줄이고, 코드 리뷰 시간을 단축하며, 새로운 개발자가 프로젝트에 빠르게 적응할 수 있도록 도와줍니다. 프로덕션 환경에서는 특히 코드의 명확성과 일관성이 중요한데, 이는 시스템의 안정성과 직결되기 때문입니다. 지금까지 제 프로그래밍 경험상 클린 코드는 습관입니다.평소에 클린코드에 대한 지식을 리마인드하고 지속적으로 코딩 실력을 다져줘야합니다.아래의 글도 같이 보시고 리마인드해보세요. [Python/Clean Code Series(클린코드)] - 파이썬 클린코드 기본 파이썬 클린코드 기본클린 코드는 여러가지 측면이 있지만, 그 중에서도 다른 사람이 쉽게..
2025.02.08 -
프로그래밍에서 데이터의 무결성을 유지하는 것은 매우 중요합니다. 특히, 클래스 내부의 속성(데이터)이 외부에서 직접 변경될 경우, 원하지 않는 값이 설정되어 프로그램이 예상치 못한 동작을 할 수 있습니다. 이를 방지하기 위해 Getter(게터)와 Setter(세터) 를 사용합니다. Getter와 Setter는 클래스 내부의 private(비공개) 속성에 접근하거나 값을 변경하는 메서드입니다. 이를 활용하면 데이터를 안전하게 보호하면서도 필요한 경우 외부에서 값을 읽고 수정할 수 있도록 허용할 수 있습니다.Getter & Setter를 사용해야 하는 이유데이터 보호: 직접 속성에 접근하는 것을 방지하고, 유효한 값만 설정되도록 제한할 수 있습니다.내부 구현 변경 가능: 클래스 내부 구조가 변경되더라도 G..
파이썬 Getter & Setter: 데이터 보호의 수호자프로그래밍에서 데이터의 무결성을 유지하는 것은 매우 중요합니다. 특히, 클래스 내부의 속성(데이터)이 외부에서 직접 변경될 경우, 원하지 않는 값이 설정되어 프로그램이 예상치 못한 동작을 할 수 있습니다. 이를 방지하기 위해 Getter(게터)와 Setter(세터) 를 사용합니다. Getter와 Setter는 클래스 내부의 private(비공개) 속성에 접근하거나 값을 변경하는 메서드입니다. 이를 활용하면 데이터를 안전하게 보호하면서도 필요한 경우 외부에서 값을 읽고 수정할 수 있도록 허용할 수 있습니다.Getter & Setter를 사용해야 하는 이유데이터 보호: 직접 속성에 접근하는 것을 방지하고, 유효한 값만 설정되도록 제한할 수 있습니다.내부 구현 변경 가능: 클래스 내부 구조가 변경되더라도 G..
2025.02.03 -
Python 유효성 검사하고 dictionary 특정 키값 업데이트하기. Clean하게. 유효성 검사 안하면 아래처럼 에러가 생깁니다.bson.errors.InvalidId: 'undefined' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string 우선 키값을 update하려면 아래처럼 유효성을 검사하고 새로운 value를 넣으면 됩니다. if aiPicPrompt: aiPicPrompt["_id"] = str(aiPicPrompt.get("_id")) 하지만 위의코드도 작동하지만 한줄로 줄이고, 더 멋지게 작성할 수 있습니다.aiPicPrompt and aiPicPrompt.update(_id=str(ai..
Python 유효성 검사하고 dictionary 특정 키값 업데이트하기[As Clean](bson.errors.InvalidId: 'undefined' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string)Python 유효성 검사하고 dictionary 특정 키값 업데이트하기. Clean하게. 유효성 검사 안하면 아래처럼 에러가 생깁니다.bson.errors.InvalidId: 'undefined' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string 우선 키값을 update하려면 아래처럼 유효성을 검사하고 새로운 value를 넣으면 됩니다. if aiPicPrompt: aiPicPrompt["_id"] = str(aiPicPrompt.get("_id")) 하지만 위의코드도 작동하지만 한줄로 줄이고, 더 멋지게 작성할 수 있습니다.aiPicPrompt and aiPicPrompt.update(_id=str(ai..
2024.08.16 -
파이썬에서 딕셔너리를 다루는 더 나은 방법에 대해 이야기해보려고 합니다. 1) dict(key=value) 사용하기우리가 흔히 알고 있는 딕셔너리 생성 방법은 중괄호 {}를 사용하는 것입니다. 하지만 dict(key=value)로 생성하는 방법은 더 깔끔하고 직관적입니다. # 일반적으로 dictionary를 생성할때d = {'apple':4,'orange':5,'pear':6,'pineapple':7}# 더 나은 방법으로 똑같이 dictionary를 생성하는법d = dict(apple=4, orange=5, pear=6, pineapple=7) dict(key=value) 장점:{}를 사용할 때, 문자열 키에 따옴표를 입력할 필요가 없습니다.예를 들어, 'apple', 'orange' 등과 같이 말이죠..
Python 딕셔너리에 대해서 알면 좋은 8가지 (FOR CLEAN CODE)파이썬에서 딕셔너리를 다루는 더 나은 방법에 대해 이야기해보려고 합니다. 1) dict(key=value) 사용하기우리가 흔히 알고 있는 딕셔너리 생성 방법은 중괄호 {}를 사용하는 것입니다. 하지만 dict(key=value)로 생성하는 방법은 더 깔끔하고 직관적입니다. # 일반적으로 dictionary를 생성할때d = {'apple':4,'orange':5,'pear':6,'pineapple':7}# 더 나은 방법으로 똑같이 dictionary를 생성하는법d = dict(apple=4, orange=5, pear=6, pineapple=7) dict(key=value) 장점:{}를 사용할 때, 문자열 키에 따옴표를 입력할 필요가 없습니다.예를 들어, 'apple', 'orange' 등과 같이 말이죠..
2024.08.06 -
Python 개발자라면 파이프라인 이라는 용어를 들어보셨을 것입니다 . 파이프라인이란 정확히 무엇이며 왜 유용한지 개념, 작동 방식, 더 깔끔하고 효율적인 코드를 작성하는 데 어떻게 도움이 되는지 살펴보겠습니다. 파이프라인이란? 파이프라인은 메서드에 인자를 넣었을때 출력값을 바로 다음 메서드에 넣어서 출력값을 얻고 또 그 값을 여러 메서드를 거쳐 최종값을 얻는 방식입니다. 예를 들어, 숫자 목록이 있고 숫자 목록에 대해 다음 작업을 수행하려고 한다고 가정합니다. 홀수를 필터링하세요. 각 숫자에 10을 곱하세요. 각 숫자에 5를 더하세요. 결과 숫자의 평균을 계산합니다. 보통 위의 조건의 로직을 코딩할때 목록을 반복하고 각 작업을 하나씩 적용하여 중간 결과를 새 목록에 저장하는 루프를 작성합니다. code..
Python 파이프 | pipe 사용법!(How to use Pipeline in python)Python 개발자라면 파이프라인 이라는 용어를 들어보셨을 것입니다 . 파이프라인이란 정확히 무엇이며 왜 유용한지 개념, 작동 방식, 더 깔끔하고 효율적인 코드를 작성하는 데 어떻게 도움이 되는지 살펴보겠습니다. 파이프라인이란? 파이프라인은 메서드에 인자를 넣었을때 출력값을 바로 다음 메서드에 넣어서 출력값을 얻고 또 그 값을 여러 메서드를 거쳐 최종값을 얻는 방식입니다. 예를 들어, 숫자 목록이 있고 숫자 목록에 대해 다음 작업을 수행하려고 한다고 가정합니다. 홀수를 필터링하세요. 각 숫자에 10을 곱하세요. 각 숫자에 5를 더하세요. 결과 숫자의 평균을 계산합니다. 보통 위의 조건의 로직을 코딩할때 목록을 반복하고 각 작업을 하나씩 적용하여 중간 결과를 새 목록에 저장하는 루프를 작성합니다. code..
2024.03.17 -
파이썬 내장 함수를 사용하여 코드를 간결하게 작성할 수 있습니다. 예를 들어, 리스트의 합을 구하는 함수 sum을 사용하여 코드를 간결하게 작성할 수 있습니다 간단 예시 numbers = [1, 2, 3, 4, 5] sum_of_numbers = sum(numbers) range(): 지정한 범위의 정수들을 반환하는 함수입니다. for i in range(1, 11): print(i) zip(): 두 개 이상의 리스트의 요소들을 병렬로 묶어주는 함수입니다. names = ['Alice', 'Bob', 'Charlie'] ages = [25, 30, 35] for name, age in zip(names, ages): print(name, age) sorted(): 인자로 받은 iterable 객체를 정렬..
(파이썬 클린코드) 파이썬 내장 함수 사용하기파이썬 내장 함수를 사용하여 코드를 간결하게 작성할 수 있습니다. 예를 들어, 리스트의 합을 구하는 함수 sum을 사용하여 코드를 간결하게 작성할 수 있습니다 간단 예시 numbers = [1, 2, 3, 4, 5] sum_of_numbers = sum(numbers) range(): 지정한 범위의 정수들을 반환하는 함수입니다. for i in range(1, 11): print(i) zip(): 두 개 이상의 리스트의 요소들을 병렬로 묶어주는 함수입니다. names = ['Alice', 'Bob', 'Charlie'] ages = [25, 30, 35] for name, age in zip(names, ages): print(name, age) sorted(): 인자로 받은 iterable 객체를 정렬..
2023.02.23 -
(파이썬 클린코드) 제너레이터(Generator)파이썬에서 제너레이터(generator)는 이터레이터(iterator)와 유사하지만, 이터레이터보다 더 강력하고 효율적인 함수입니다. 제너레이터는 값을 반환할 때마다 함수의 상태를 기억하고 다음 값 반환에 사용합니다. 제너레이터 함수는 yield 키워드를 사용하여 값을 반환합니다. 예를 들어, 0부터 시작하여 지정된 범위까지 모든 짝수를 반환하는 제너레이터 함수를 작성해 보겠습니다. def even_numbers(n): for i in range(n): if i % 2 == 0: yield i 이 함수를 호출하면, 이터레이터 객체가 반환됩니다. 이 객체는 __next__() 메소드를 사용하여 값을 하나씩 가져올 수 있습..
(파이썬 클린코드) 제너레이터(Generator)(파이썬 클린코드) 제너레이터(Generator)파이썬에서 제너레이터(generator)는 이터레이터(iterator)와 유사하지만, 이터레이터보다 더 강력하고 효율적인 함수입니다. 제너레이터는 값을 반환할 때마다 함수의 상태를 기억하고 다음 값 반환에 사용합니다. 제너레이터 함수는 yield 키워드를 사용하여 값을 반환합니다. 예를 들어, 0부터 시작하여 지정된 범위까지 모든 짝수를 반환하는 제너레이터 함수를 작성해 보겠습니다. def even_numbers(n): for i in range(n): if i % 2 == 0: yield i 이 함수를 호출하면, 이터레이터 객체가 반환됩니다. 이 객체는 __next__() 메소드를 사용하여 값을 하나씩 가져올 수 있습..
2023.02.23