Я столкнулся с ситуацией, когда у меня есть куча «систем», которые необходимо инициализировать последовательно, при этом следующая система инициализируется только в том случае, если все последующие системы успешно инициализированы.
Это привело меня к целому ряду вложенных операторов if-else. Вот некоторый псевдокод для визуализации.
bool mainInit () {
if (!system1Init ()) {
reportError (); // some error reporting function
}
else {
if (!system2Init ()) {
reportError ();
}
else {
if (!system3Init ()) {
// ... and so on
Я считаю, что это начинает выглядеть как беспорядок, когда вы получаете даже несколько уровней.
Теперь я подумал об использовании вместо этого оператора switch, начиная с первого случая и переходя к другим случаям в случае успеха, прерываясь только в случае ошибки.
bool mainInit () {
switch (1) {
case 1:
if (!system1Init ()) {
reportError ();
break;
}
case 2:
if (!system2Init ())
reportError ();
break;
}
// ....
}
Теперь мне это нравится намного больше. Я нахожу его намного легче читать, особенно с некоторыми приличными комментариями, но я довольно новичок в программировании.
Итак, мой вопрос: видя, что это не то, как традиционно используются операторы switch (по крайней мере, из того, что я видел), приемлемо ли что-то подобное или это будет считаться дурным тоном?
Будучи новичком в программировании, я стараюсь не развивать слишком много вредных привычек, которые могут расстраивать и усложнять жизнь другим программистам в будущем.
Я провел поиск, но большая часть того, что я нашел, была связана с заменой цепочек операторов if-else if, а не с заменой вложенных.
mainInit
? - person Beta   schedule 28.09.2014return false
илиthrow ...
в случае неудачи? - person Mike Seymour   schedule 28.09.2014else { if() {
большинство людей делаютelse if() {
. - person Galik   schedule 28.09.2014