Сообщение Re[4]: Опять про исключения бизнес-процесса (2017 год) от 01.11.2017 7:55
Изменено 01.11.2017 7:56 Shmj
Re[4]: Опять про исключения бизнес-процесса (2017 год)
Здравствуйте, yenik, Вы писали:
Y>
Дык... в том то и дело -- в нормальном случае операция проходит и вы отгружаете товар. А если перевести средства не удалось, то это не стандартная ситуация.
Вот, даже наш местный MVP, спец. по guidelines, рекомендует юзать Exception: http://rsdn.org/forum/philosophy/6951261.1
Получается есть таки 2 лагеря?
Y>Видятся варианты.
Y>1)
Y>TransferValidationResult ValidateTransfer(int toAccount, decimal amount);
Y>long Transfer(int toAccount, decimal amount); // бросает исключение при неуспехе
Пред. проверка обычно проходит иначе. Прежде чем пользователь переводит со счета, он видит остаток. Если там 0, то вы просто не отобразите кнопку "перевести средства" в GUI. Если попытается ввести сумму больше, то вы на уровне проверки вводимых данных не дадите этого сделать.
По этому метод Transfer в обычной ситуации отработает, ведь пред. проверки делаютя в любом случае.
Y>2)
Y>bool TryTransfer(int toAccount, decimal amount, out TransferValidationResult transferValidationResult);
Вот, никогда не видел ничего подобного.
Y>
Y>X DO NOT use exceptions for the normal flow of control, if possible.
Дык... в том то и дело -- в нормальном случае операция проходит и вы отгружаете товар. А если перевести средства не удалось, то это не стандартная ситуация.
Вот, даже наш местный MVP, спец. по guidelines, рекомендует юзать Exception: http://rsdn.org/forum/philosophy/6951261.1
Автор: gandjustas
Дата: 01.11.17
Дата: 01.11.17
Получается есть таки 2 лагеря?
Y>Видятся варианты.
Y>1)
Y>TransferValidationResult ValidateTransfer(int toAccount, decimal amount);
Y>long Transfer(int toAccount, decimal amount); // бросает исключение при неуспехе
Пред. проверка обычно проходит иначе. Прежде чем пользователь переводит со счета, он видит остаток. Если там 0, то вы просто не отобразите кнопку "перевести средства" в GUI. Если попытается ввести сумму больше, то вы на уровне проверки вводимых данных не дадите этого сделать.
По этому метод Transfer в обычной ситуации отработает, ведь пред. проверки делаютя в любом случае.
Y>2)
Y>bool TryTransfer(int toAccount, decimal amount, out TransferValidationResult transferValidationResult);
Вот, никогда не видел ничего подобного.
Re[4]: Опять про исключения бизнес-процесса (2017 год)
Здравствуйте, yenik, Вы писали:
Y>
Дык... в том то и дело -- в нормальном случае операция проходит и вы отгружаете товар. А если перевести средства не удалось, то это не стандартная ситуация.
Вот, даже наш местный MVP, спец. по guidelines, рекомендует юзать Exception: http://rsdn.org/forum/philosophy/6951261.1
Получается есть таки 2 лагеря?
Y>Видятся варианты.
Y>1)
Y>TransferValidationResult ValidateTransfer(int toAccount, decimal amount);
Y>long Transfer(int toAccount, decimal amount); // бросает исключение при неуспехе
Пред. проверка обычно проходит иначе. Прежде чем пользователь переводит со счета, он видит остаток. Если там 0, то вы просто не отобразите кнопку "перевести средства" в GUI. Если попытается ввести сумму больше, то вы на уровне проверки вводимых данных не дадите этого сделать.
По этому метод Transfer в обычной ситуации отработает, ведь пред. проверки делаютя в любом случае.
Y>2)
Y>bool TryTransfer(int toAccount, decimal amount, out TransferValidationResult transferValidationResult);
Вот, никогда не видел ничего подобного. В обычном случае операция проходит, ведь пред. проверки делаются всегда.
Y>
Y>X DO NOT use exceptions for the normal flow of control, if possible.
Дык... в том то и дело -- в нормальном случае операция проходит и вы отгружаете товар. А если перевести средства не удалось, то это не стандартная ситуация.
Вот, даже наш местный MVP, спец. по guidelines, рекомендует юзать Exception: http://rsdn.org/forum/philosophy/6951261.1
Автор: gandjustas
Дата: 01.11.17
Дата: 01.11.17
Получается есть таки 2 лагеря?
Y>Видятся варианты.
Y>1)
Y>TransferValidationResult ValidateTransfer(int toAccount, decimal amount);
Y>long Transfer(int toAccount, decimal amount); // бросает исключение при неуспехе
Пред. проверка обычно проходит иначе. Прежде чем пользователь переводит со счета, он видит остаток. Если там 0, то вы просто не отобразите кнопку "перевести средства" в GUI. Если попытается ввести сумму больше, то вы на уровне проверки вводимых данных не дадите этого сделать.
По этому метод Transfer в обычной ситуации отработает, ведь пред. проверки делаютя в любом случае.
Y>2)
Y>bool TryTransfer(int toAccount, decimal amount, out TransferValidationResult transferValidationResult);
Вот, никогда не видел ничего подобного. В обычном случае операция проходит, ведь пред. проверки делаются всегда.