В нашей компании, ведущем разработчике системы точек продаж на основе MVVM, которую мы разрабатываем, в C #, .NET 3.5, было выбрано следующее для наилучшего решения для наших нужд:
1) Все периферийные устройства должны быть размещены на уровне представления, включая считыватель чеков, принтер чеков, почтовый ящик, почти все.Это правило.
2) Ожидается, что мы создадим подобный код на бизнес-уровне, который вызывается на уровне представления, пока он не перестанет генерировать исключения, и завершится:
public void DoPaymentAtEndOfTicket() {
if(eCurrentState == enuStates.iSTART) {
eCurrentState = enuStates.iCONTROL_MAXIMUM_AMOUNT_BREACHED;
objController.Throw_Exception_To_UI_If_Maximum_Amount_Breached(); // might throw Exception to be handled by presentation layer
eCurrentState = enuStates.iCHECK_MINIMUM_AMOUNT_BREACHED; // Skip the control for max amount breached since no exception
}
if(eCurrentState == enuStates.iCONTROL_MAXIMUM_AMOUNT_BREACHED) {
objController.Throw_Exception_To_UI_To_Request_Supervisor_Credentials();
eCurrentState = enuStates.iCHECK_MINIMUM_AMOUNT_BREACHED;
}
if(eCurrentState == enuStates.iCHECK_MINIMUM_AMOUNT_BREACHED) {
eCurrentState = enuStates.iCONTROL_MINIMUM_AMOUNT_BREACHED;
objController.Throw_Exception_To_UI_If_Minimum_Amount_Breached(); // might throw Exception to be handled by presentation layer
eCurrentState = enuStates.iSTART_READ_CHEQUE_SINCE_AMOUNT_OK; // Skip the control for min amount breached since no exception
}
if(eCurrentState == enuStates.iCONTROL_MINIMUM_AMOUNT_BREACHED) {
objController.Throw_Exception_To_UI_To_Request_Supervisor_Credentials();
eCurrentState = enuStates.iSTART_READ_CHEQUE_SINCE_AMOUNT_OK;
}
if(eCurrentState == enuStates.iSTART_READ_CHEQUE_SINCE_AMOUNT_OK) {
eCurrentState = enuStates.iCHEQUE_READING_FINISHED_PROCESS_CMC7;
throw new Presentation_Layer_Interacts_With_Cheque_Reader_Exception();
}
if(eCurrentState == enuStates.iCHEQUE_READING_FINISHED_PROCESS_CMC7){
objController.ControlTheCheque(sCMC7NumberFromReaderInViewModel);
}
}
3)Мой вопрос: как, если таковые имеются, есть ли вероятность того, что на профессиональном уровне это считается кодексом хорошего качества?Как мне попытаться убедить руководство в том, что мы на неправильном пути?(делает это в .NET 3.5)