Одна из вещей, которую я усвоил в программировании, заключается не в том, что вам не нужны операторы case, вам не нужны операторы case.
Операторы case — это способ раздуть объект. Когда вы его используете, вы ухудшаете техническое обслуживание. У вас будут все возможности, которые вы хотите в то время, но в тот день, когда вы захотите что-то добавить, вам придется просмотреть неприятный код, когда вы больше не помните тонкостей ответственности этого объекта, поэтому вы его раздуете. даже больше.
В краткосрочной перспективе они выглядят дружелюбными, но прецеденты вам не друзья. Они укусят вас в долгосрочной перспективе.
Также они делают ваш код менее гибким. Например, вы не можете уверенно добавить кейс о предыдущем коде. Вы вынуждены пересматривать старый код, когда уже не помните, почему он был закодирован именно так.
Операторы case — враги хорошего кода.
Если у вас есть что-то, что выходит за рамки ifTrue:ifFalse:, то правильно будет сделать для этого состояния. Итак, что вы делаете, так это реализуете три очень простых класса, и все они понимают некоторые глаголы.
Скажем, #делайСледующее. Поэтому, когда объект получает сообщение, он делегирует его состоянию (в зависимости от того, какое из этих 3 (или 30, так что обратите внимание, что это хорошо масштабирует сложность)) и состояние знает, как заставить исходный получатель реагировать правильно.
Это сделает ваш код легким, очевидным и легко поддерживаемым. Вы сможете забыть об этом, потому что вы знаете, что когда вы посмотрите на это снова, все будет настолько очевидным, что вам не нужно думать о прошлом вашего кода столько, сколько о будущем вашего кода.
Это важно, потому что ваша память — самая дорогая память, которая у вас есть, и, насколько мне известно, ее нельзя обновить. Таким образом, эта техника позволяет вам делать более мощные вещи.
Кроме того, создание 3 классов может показаться для некоторых дополнительной работой, но это не так. Любой новичок может добавить 3 пустых класса в мгновение ока, но только опытный специалист вспомнит, как оператор case в старом коде был сделан таким, каким он был сделан. И если вы настроены крайне оптимистично, вам потребуются минуты, чтобы вспомнить об этом, чтобы вы все знали, что делать дальше. Подумай об этом.
person
Sebastian Sastre
schedule
24.10.2010