issues
search
somedd
/
swift-VendingMachineApp
음료수 자판기 iOS 앱 저장소 / `18.03.05~`18.03.20
0
stars
0
forks
source link
Step5 Feedback
#8
Closed
somedd
closed
6 years ago
somedd
commented
6 years ago
피드백
somedd
commented
6 years ago
Notification.Name("didUpdateBalance") 노티 이름도 사용하는 곳마다 문자열로 하드코딩하면 실수할 수 있어서 좋지 않습니다.
Notification.Name("didUpdateBalance") 자체를 미리 모아서 선언해놓고 선택해서 쓸 수 있도록 개선해보세요.
userInfo["inventory"] 나 userInfo["balance"] 에서 쓰는 문자열도 의미있는 코드로 모아놓는게 좋습니다. 습관적으로 하드코딩하는 것을 줄여보세요.
이런 값을 표기하는 것도 Formatter를 만들어서 특정 객체가 처리하도록 하는게 좋습니다.
addBeverage()에서는 post()할 때 object:self 를 넘기는데 addMoney()에서는 post할 때 object: balance를 넘기네요. 왜 두 개가 서로 다른걸까요? 여기서 object는 어떤 의미인가요?
싱글톤 객체면서 이런 식으로 접근하면 내부 변수가 의존성을 갖게 됩니다. 싱글톤 객체에 의존하지 않도록 개선해보세요.
somedd
commented
6 years ago
1차 피드백 반영
generateCountOfProduct() 메서드 개선 : [Int]를 반환하는 구조로 변경 및 적용
Keyword 구조체 추가 -> 기존 문자열 하드코딩 제거
ViewController내부 vendingMachine 변수 제거 -> VendingMachine.shared() 활용 하 의존성 제거
extension 활용 하 format적용
somedd
commented
6 years ago
오히려 너무 길어진건 아닌가요? ㅎㅎ 다음부터는 더 불편해지지 않도록 최소화하는 방법도 고민해보세요.
이렇게 대체하는 건 의존성이 없어지는 게 아닙니다. VendingMachine 객체를 대체해서 ViewController를 테스트하려면 어떻게 해야 할까요?
somedd
commented
6 years ago
2차 피드백 반영
updateinventoryLabels() 내부 UserInfo 부분 수정
updateInventory()함수 매개변수 제거 및 VendingMachine 메서드로만 접근하도록 수정
BaseMode Protocol 선언 및 ViewController 내부 적용
somedd
commented
6 years ago
VendingMachineBase 객체를 다시 만들 필요는 없습니다. ViewController 가 private var vendingMachine : BaseMode를 갖고 있고 BaseMode 채택한 객체를 지정할 수 있는 메소드가 있으면 됩니다.
somedd
commented
6 years ago
3차 피드백 반영
객체 내부에 의존적인 다른 객체는 항상 프로토콜 타입에 의존하도록 만드는걸 잊지마세요.
피드백