Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[산타] 짱구 미션 제출합니다. #16

Open
wants to merge 9 commits into
base: 02ggang9-main
Choose a base branch
from

Conversation

02ggang9
Copy link
Collaborator

@02ggang9 02ggang9 commented Mar 4, 2024

구현하면서 고민되었던 점

이번 미션에서는 by lazy를 많이 애용했습니다! 이유는 방문 날짜와 주문 메뉴만 안다면 할인 전 총주문 금액, 증정 메뉴 등을 알 수 있기 때문입니다. lateinit var를 사용하지 않은 이유는 미니언 선배님께서 var로 선언할 경우 언제 값이 바뀔지 몰라 긴장하게 된다고 말씀해 주셔서 입니다.

그런데 by lazy가 과연 좋은 방법인지 아직까지 잘 모르겠네요..ㅎㅎ 로직이 복잡해 진다면 다른 방법을 사용해야 할 것 같습니다. 다른 분들 의견도 궁금하네요!

또, OrderMenu 객체와 EventDiscountPolicyFactory가 서로 강하게 커플링 되어 있다고 생각이 드는데 느슨하게 할 수 있는 방법이 있을까요?

자랑스러운 점

by lazy 사용이 좋은지는 아직 잘 모르겠으나 사용해 봤을 때, 코드가 깔끔해 진 것 같습니다!

죄송한 점

테스트 코드를 못 짰습니다..!! 정말로 죄송합니다..ㅠㅠ

@02ggang9 02ggang9 self-assigned this Mar 4, 2024
Copy link
Collaborator

@1jeongg 1jeongg left a comment

Choose a reason for hiding this comment

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

이번 주도 고생많으셨어요!!

리플렉션.. 뭔지 하나도 모르겠지만 공부하려는 열정이 대단하십니다!!

다음주도 화이팅입니다!!

get() = "평일 할인"

override fun isSatisfiedBy(orderMenu: OrderMenu): Boolean {
val days = listOf(3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 31)
Copy link
Collaborator

Choose a reason for hiding this comment

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

달이 바뀐다면 매번 다시 입력해줘야하니까 귀찮지 않을까요? 나머지를 통해 평일인지 구별하는게 좋을 것 같아요!

import kotlin.reflect.cast


object Container {
Copy link
Collaborator

Choose a reason for hiding this comment

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

오.... 사실 뭔지 모르겠지만 멋있습니다 👍👍

fun getVisitDay(): Int {
val visitDay = (Console.readLine()
?.toIntOrNull()
?: throw IllegalArgumentException("숫자만 입력해 주세요."))
Copy link
Collaborator

Choose a reason for hiding this comment

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

이 class의 Exception들은 어디서 catch하나요??

if (orders.keys.all { it.menuType == MenuType.DRINK }) throw IllegalArgumentException("$ERROR_PREFIX 음료만 주문 시, 주문할 수 없습니다.")


require(orders.values.count() < 20) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

문제조건에 메뉴는 한 번에 최대 20개까지만 주문할 수 있습니다. 이렇게 되어있어서 20개까지 주문 가능할 것 같아요!


fun printReceipt(ordersDto: OrderMenu) {
val giveawayMenu = if (ordersDto.giveMenu != Menu.NOTHING) {
ordersDto.giveMenu.mainMenuName + " 1개"
Copy link
Collaborator

Choose a reason for hiding this comment

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

giveMenu에서 증정 메뉴의 개수도 같이 관리해주면 좋을 것 같아요!

println("\n<증정 메뉴>")
println(giveawayMenu)

println("\n<혜택 내역>")
Copy link
Collaborator

Choose a reason for hiding this comment

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

금액이 0원인 경우에 -는 안 붙어지는 건가요? (돌려보고 싶었는데,, reflection 에러가 나네요 ㅠㅠ)
그리고 혜택 내역이 없을 경우 "없음"이 출력되어야 할 것 같아요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants