사용자 입력 처리의 확장성과 가독성을 위한 구조화 방법? 🤔 #171
Replies: 3 comments 4 replies
-
제 의견이 정답은 아니겠지만 "변경"의 관점에선 아쉬운 코드 라고 느꼈는데 이유는 아래와 같단 생각입니다!
그래서 저는 view에서 검증을 하도록 코드를 만들었답니다! 다른 분들 의견도 궁금하네여 🥹 const InputView = (function InputView() {
const getUserInput = async (message) => {
const userInput = await createUserInputByQuestion(message);
Validator.checkByMessage(userInput, message);
return userInput;
};
return {
async input(message) {
const userInput = await getUserInput(message);
// ..
},
}; |
Beta Was this translation helpful? Give feedback.
-
저는 Validation을 검증 대상이 Model인지 아닌지에 따라서 Model과 Controller로 분리하여 책임지도록 수정했습니다!
라는 말이 타당해보였기 때문이에요. class App {
...
#checkValidation(target, validator, trigger) {
try {
validator(target);
} catch (err) {
this.#showError(err, trigger);
}
}
#getModel(trigger, Model, ...args) {
try {
return new Model(...args);
} catch (err) {
return this.#showError(err, trigger);
}
}
async #getCarNames() {
const names = await this.#getUserInput(MESSAGES.REQUEST.ENTER_THE_CARS);
const nameList = splitByStandard(names);
this.#checkValidation(nameList, Validator.isValidList, this.#getCarNames);
this.#setCars(nameList);
}
#setCars(names) {
this.#cars = names.map((name) => this.#getModel(this.#getCarNames, Car, name));
const completed = this.#cars.every((car) => car);
if (completed) this.#getRound();
}
async #getRound() {
const round = await this.#getUserInput(MESSAGES.REQUEST.ENTER_THE_ROUND);
this.#setTrack(round);
}
#setTrack(round) {
this.#track = this.#getModel(this.#getRound, Track, round);
if (this.#track) this.#startRacing();
}
...
} class Car {
constructor(name) {
Validator.isValidName(name);
this.#name = name;
}
...
} class Track {
constructor(name) {
Validator.isValidRound(round);
this.#endRound = round;
}
...
} |
Beta Was this translation helpful? Give feedback.
-
https://www.youtube.com/watch?v=uoVNJkyXX0I&t=175s 이 영상에서 mvc에서 validate의 주 책임은 controller와 model에 있다고 하고 다른 글들에서도 controller, model에서 처리한다고 하고 view에 과도한 책임은 좋지 않다고하네여 참고하시면 좋을거 같습니다 🥲 |
Beta Was this translation helpful? Give feedback.
-
현재 제 코드 구조에서는 사용자로부터 입력을 받아, 이를 유효성 검사 후, 모델에 이를 반영하는 세 가지 단계를 거치게 됩니다.
입력(view 호출) => 유효성 검증(에러 처리) => 사용(Model 전달)
입력 항목이 늘어나면서, 이에 따른 코드의 복잡성이 증가하고, 많은 반복 코드가 생기게 되었습니다. 특히, 입력사항이 단지 하나 늘었을 뿐인데도 불구하고 이를 처리하는 데 추가로 필요한 코드량이 많아져서 고민이 많습니다. 😨
사용자의 입력을 받고 처리하는 부분을 어떻게 구조화하면 확장성과 가독성을 확보할 수 있을지에 대해, 다른 팀원분들도 많은 고민을 하셨을 것 같은데. 의견을 듣고싶습니다!
어떤 접근법을 사용하셔서 이런 문제를 개선하려고 노력하셨나용? 🤔
Beta Was this translation helpful? Give feedback.
All reactions