этот оператор переключения плохо пахнет? [закрытый]

Насколько я понимаю, вы можете использовать модули отложенной загрузки для каждой имеющейся функции.

Смотрите мой my stackblitz для более подробной информации.

Когда вы обновляете страницу со стеком, она остается на той же странице.

5
задан Bhargav Rao 30 April 2019 в 02:31
поделиться

9 ответов

Компилятор C# дает предупреждение, если Вы делаете это высказывание, что повреждение является недостижимым кодом. Таким образом в моей книге это - невоспитанность, чтобы иметь и возврат и повреждение.

11
ответ дан 18 December 2019 в 05:17
поделиться

Нет, пропуск не является плохим стилем - включение является плохим стилем. Это - недостижимые операторы. Избавьтесь от них.

Мне нравится то, что случаи возвращаются непосредственно вместо того, чтобы установить локальную переменную и затем возвратиться просто внизу - это означает, что невероятно ясно при чтении кода, который это действительно просто должно возвратить, и это - все.

Заметка на полях с точки зрения переключения во-первых:

Что касается того, является ли использование оператора переключения правильным поступком здесь, это действительно зависит от других вещей. Имело бы смысл использовать полиморфный тип вместо этого? Если Вы находитесь в Java, Вы могли бы использовать умное перечисление? (Можно подражать им в C#, но нет такой же поддержки.)

Я сказал бы, что это должно, по крайней мере, запросить рассматривающие различные проекты - но это может быть самый простой способ сделать то, что Вы хотите.

21
ответ дан 18 December 2019 в 05:17
поделиться

По-моему, я опустил бы ключевое слово 'повреждения'. Я лично думаю, что это помогает напомнить людям, что 'Выполнение закончилось! Ничто больше для наблюдения здесь!'.

5
ответ дан 18 December 2019 в 05:17
поделиться

Я сделал бы небольшое изменение:

switch(some case) {
    case 1:
           // compute something ...
           break;
    case 2:
           // compute something ...
           break;
/* some more cases ... */
    case X:
           // compute something ...
           break;
    default:
           // do something
           break;
}
return something;
5
ответ дан 18 December 2019 в 05:17
поделиться

Я не уверен, как литеральный, которым код предназначается, чтобы быть, таким образом, некоторые из этих наблюдений не могут быть применимыми...

"случай 1", Если Вы - действительно жесткое кодирование numers как это, я думаю, что это - плохой стиль и необходимо изучить использование перечисления.

Если Вы просто возвращаете что-то и нет никакой дополнительной логики в подмножестве случаев, Вы могли бы рассмотреть помещение "somethings" в массиве или словаре и просто обращении к ним их индексом вместо того, чтобы использовать оператор переключения...

возвратите somethings [индекс]

1
ответ дан 18 December 2019 в 05:17
поделиться

Запах кода подразумевает проблему проектирования. Это - просто проблема форматирования. Я думаю, что большинство людей согласилось бы, что версия с опущенными повреждениями выше.

0
ответ дан 18 December 2019 в 05:17
поделиться

Повреждение избыточно.

Некоторое эмпирическое правило, всегда хорошо выйти из функции в одном месте только, Но так как это правило было сделано, Выгода Попытки была изобретена (ООП goto).

Если Вы сохраняете тот же стиль на всем протяжении своего приложения, я предполагаю, что можно жить с возвратом в переключателе.

0
ответ дан 18 December 2019 в 05:17
поделиться

Запах кода здесь является твердыми кодированными значениями в операторах выбора.

Что касается возвратов это - больше вопрос вкуса и хорошего решения. Уверенный, если Ваш случай охватывает mutiple страницы, легче читать, если возврат находится в случае, но затем проблемой является большой переключатель для начала.

Personnaly я предпочитаю единственную опцию возврата, потому что, если когда-нибудь необходимо добавить еще некоторую обработку затем, более дешево осуществить рефакторинг, чем посещение всех случаев. Кроме того, если дали кому-то еще для рефакторинга у них не будет искушения скопировать, вставляют код в каждом случае, наименьшее я надеялся бы так..., если они делают они лучше надеются, что я не тот, делающий их обзор кода (для вставки копии, очевидно).

0
ответ дан 18 December 2019 в 05:17
поделиться

Операторы Switch сами по себе являются запахом кода.

В соответствии с тем, что сказано в l99057j, если все, что вы делаете, это сопоставляете входные данные с постоянными значениями, это место для соответствующего поиска структура, такая как массив / список для последовательных входов или словарь / карта для разреженных, а не оператор switch. Если вы что-то вычисляете, то значением будет делегат, который вы вызываете с вводом.

0
ответ дан 18 December 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: