Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions src/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# main.py
# 사칙연산 계산기를 실행하는 메인 프로그램

# 실행법 : src 파일로 이동 후 python main.py 입력

from add import add
from sub import sub
from mul import mul
from div import div
Comment on lines +6 to +9
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR에서 변경된 파일을 확인하다가 흥미로운 부분을 발견했어요.

현재 이 브랜치에는 add.py, sub.py, mul.py, div.py 파일이 존재하지 않는데,
코드에서는 이 파일들을 import하고 있더라고요.
즉, 지금 이 브랜치만 단독으로 실행하면 코드가 정상적으로 동작하지 않아요.

몇 가지 여쭤봐도 될까요?

이 파일들이 없는 상태에서 import를 작성하신 이유가 있으셨나요?
또, 이 코드가 정상적으로 동작하려면 어떤 조건이 갖춰져야 한다고 생각하시나요?

브랜치를 나눠서 작업하는 방식 자체는 좋은 접근이에요.
다만, 이런 상황에서 브랜치 간 의존 관계를
어떻게 관리하면 좋을지에 대해서도 한번 생각해보시면 좋을 것 같습니다.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

말씀 주신 부분 확인했습니다!

현재 main.py에서 add, sub, mul, div를 import한 이유는
해당 연산 모듈들이 팀원분들에 의해 구현될 것을 전제로,
최종적으로 모든 기능이 합쳐졌을 때의 실행 흐름을 기준으로 작성했기 때문입니다.

즉, 저는 이번 작업에서
연산 함수들을 호출하는 메인 로직을 먼저 구성하는 역할이라고 생각하고 구현했습니다.

다만 말씀해주신 것처럼 현재 PR 브랜치만 기준으로 보면
연산 모듈 파일이 포함되어 있지 않아 단독 실행이 불가능한 상태이고,
이 부분은 PR 단위의 독립성과 검증 가능성을 충분히 고려하지 못한 부분이라고 생각합니다.

정상적으로 동작하려면
add.py, sub.py, mul.py, div.py 파일이 동일 경로에 함께 존재해야 합니다.

이번 피드백을 통해
브랜치 간 의존성이 있는 경우에는 PR 설명에 이를 명확히 작성하거나,
가능하면 PR 단독으로도 실행 가능하도록 작업 단위를 나누는 것이 더 적절하다는 점을 배웠습니다.

말씀 주신 부분 반영해서 구조를 다시 점검해보겠습니다.
좋은 피드백 감사합니다!


# 반복 실행을 위한 무한 루프
while True:
# 사용자로부터 첫 번째 숫자, 연산자, 두 번째 숫자 입력받기
num1 = input("첫번째 숫자 입력: ")
op = input("연산 선택 (+ - * /): ")
num2 = input("두번째 숫자 입력: ")

# 입력한 연산자에 따라 알맞은 함수 호출
if op == "+":
result = add(num1, num2)
elif op == "-":
result = sub(num1, num2)
elif op == "*":
result = mul(num1, num2)
elif op == "/":
result = div(num1, num2)
else:
result = "잘못된 연산자입니다"
Comment on lines +14 to +28
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR에서 변경된 코드를 보면, 각 연산 함수를 add(num1, num2) 형태로 호출하고 있어요.

그런데 다른 팀원분들이 구현하신 add.py, sub.py 등의 함수를 보면, 함수 내부에서 직접 input()으로 값을 입력받는 구조로 작성되어 있더라고요. 즉 지금 소영님이 작성하신 방식대로 인자를 넘겨서 호출하면, 실제로는 정상적으로 동작하지 않아요.

이 부분에서 궁금한 게 생겼는데요.

각 파일의 함수가 어떤 형태로 작성되어 있는지, 팀원분들과 미리 맞춰보셨나요?
예를 들어 "함수는 값을 인자로 받을지, 아니면 함수 내부에서 직접 입력을 받을지", "결과를 return할지, print할지" 같은 부분들이요.

브랜치를 나눠서 각자 작업하는 방식은 좋은 접근이에요. 다만 이렇게 나눠서 작업할 때는, 합치기 전에 함수의 입출력 형태를 먼저 합의하는 것이 중요해요. 이걸 인터페이스 정의라고 하는데, 이 부분을 팀 내에서 어떻게 맞추셨는지 궁금합니다 :)

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

팀원들이 각 기능을 따로 구현한 뒤, merge 단계에서 파일이 통합되는 것을 전제로 작업을 진행했습니다.

그래서 함수의 입출력 형태를 사전에 명확하게 맞추기보다는, “최종적으로 합쳐졌을 때 동작하도록 구성하면 된다”, "이렇게 코드를 짜면 나중에 합쳐졌을 때 작동이 될 것이다."라는 가정 하에 구현을 진행하게 된 것이 문제가 된 것 같습니다.

"연산 함수들을 “입력을 인자로 받아 결과를 반환하는 형태”로 통일하고,
main.py와 일관되게 동작하도록 하자." 등의 명확한 정의 없이 구두로만 진행되었다는 점에서 팀원간 코드 불일치가 발생한 것 같습니다.


# 결과 출력
print("결과:", result)

# 다시 실행 여부 확인
again = input("다시 실행하시겠습니까? (y/n): ")

# y가 아니면 종료
if again.lower() != "y":
print("계산기를 종료합니다.")
break