Когда использовать Если еще если еще по операторам переключения и наоборот [дубликату]

Простую альтернативу этой проблеме можно решить, предоставив соответствующие разрешения в самой базе данных. Например: если вы используете базу данных mysql, введите в базу данных через терминал или предоставленный интерфейс и просто следуйте этой команде:

 GRANT SELECT, INSERT, DELETE ON database TO username@'localhost' IDENTIFIED BY 'password';

Это ограничит пользователя ограничиться только указанным запросом только. Удалите разрешение удаления, и поэтому данные никогда не будут удалены из запроса, запущенного с php-страницы. Второе, что нужно сделать, это очистить привилегии, чтобы mysql обновлял разрешения и обновления.

FLUSH PRIVILEGES; 

Дополнительная информация о flush .

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

select * from mysql.user where User='username';

Подробнее о GRANT .

81
задан Cœur 13 August 2017 в 10:23
поделиться

10 ответов

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

Как пример, если Вы делали:

int value = // some value
if (value == 1) {
    doThis();
} else if (value == 2) {
    doThat();
} else {
    doTheOther();
}

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

кроме того, если Вы пишете переключатели и если-elses и использовать язык OO, необходимо полагать, что избавление от них и использование полиморфизма достигают того же результата, если это возможно.

Наконец, относительно переключателя, занимающего больше времени для ввода, я не могу помнить, кто сказал это, но я действительно когда-то читал, кто-то просит, чтобы "скорость печати была действительно вещью, которая влияет, как быстро Вы кодируете?" (перефразировал)

74
ответ дан tddmonkey 24 November 2019 в 09:39
поделиться

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

Иначе, придерживайтесь нескольких если еще операторы.

45
ответ дан Garry Shutler 24 November 2019 в 09:39
поделиться

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

См. также комментарий в этом сообщении относительно pacman ifs.

1
ответ дан Community 24 November 2019 в 09:39
поделиться

касающаяся Удобочитаемость:

я обычно предпочитаю, если/еще конструкции по операторам переключения, особенно на языках, который позволяет, проваливаются случаи. То, что я нашел, часто, как возраст проектов, и несколько разработчиков принимают участие, Вы начнете испытывать затруднения из-за конструкции оператора переключения.

, Если они (операторы) становятся чем-то большим чем простой, многие программисты становятся ленивыми и вместо того, чтобы читать весь оператор для понимания его, они просто появятся в случае для покрытия безотносительно случая, который они добавляют в оператор.

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

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

относительно Скорости:

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

Однако это не всегда имеет место, все же. Если у Вас будет простой переключатель, скажем, с возможными значениями 1 - 10, это будет иметь место. Больше значений, которые Вы добавляете, требует эти , таблицы переходов, чтобы быть больше и переключатель становятся менее эффективными (не, чем если/еще, но менее эффективный, чем сравнительно простой оператор переключения) . Кроме того, если значения очень различны (т.е. вместо 1 - 10, у Вас есть 10 возможных значений, скажем, 1, 1000, 10000, 100000, и так далее к 100000000000), переключатель менее эффективен, чем в более простом случае.

Hope это помогает.

12
ответ дан Sonu Oommen 24 November 2019 в 09:39
поделиться

Это зависит очень от конкретного случая. Предпочтительно, я думаю, что нужно использовать switch по if-else, если существуют, многие вложили if-elses.

вопрос состоит в том, сколько многие?

Вчера я спрашивал меня тот же вопрос:

public enum ProgramType {
    NEW, OLD
}

if (progType == OLD) {
    // ...
} else if (progType == NEW) {
    // ...
}

if (progType == OLD) {
    // ...
} else {
    // ...
}

switch (progType) {
case OLD:
    // ...
    break;
case NEW:
    // ...
    break;
default:
    break;
}

В этом случае, 1-е if имеет ненужный второй тест. 2-е чувства немного плохо, потому что это скрывает НОВОЕ.

я закончил тем, что выбор switch, потому что он просто читает лучше.

0
ответ дан bruno conde 24 November 2019 в 09:39
поделиться

Операторы переключения намного легче считать и поддержать, передает. И обычно быстрее и менее подвержены ошибкам.

0
ответ дан Eldelshell 24 November 2019 в 09:39
поделиться

Используйте переключатель каждый раз, когда Вы имеете больше чем 2 условия на единственной переменной, занимаете рабочие дни, например, если у Вас есть различное действие в течение каждого рабочего дня, необходимо использовать переключатель.

Другие ситуации (несколько переменных или сложных выражений if Вы должны IFS, но нет правила о том, где использовать каждого.

0
ответ дан Sergio 24 November 2019 в 09:39
поделиться

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

Для меня, я обычно находил, что вложенные (if/then/else) s обычно отражают вещи лучше, чем elseifs, и что для взаимоисключающих случаев (часто, где одна комбинация атрибутов имеет приоритет по другому), случай или что-то подобное более ясно читать два года спустя.

я думаю выбор , оператор, используемый Rexx, является особенно хорошим примером того, как сделать "Случай" хорошо (никакое отбрасывание-throughs) (глупый пример):

Select
    When (Vehicle ¬= "Car") Then
        Name = "Red Bus"
    When (Colour == "Red") Then
        Name = "Ferrari"
    Otherwise
        Name = "Plain old other car"
    End

, О, и если оптимизация не до него, получают новый компилятор или язык...

0
ответ дан Brent.Longborough 24 November 2019 в 09:39
поделиться

Тенденция избежать материала, потому что занимает больше времени ввести, является плохой вещью, попытайтесь выкорчевать его. Однако чрезмерно подробные вещи также трудно считать, настолько маленький и простой важно, но это - удобочитаемость не writability, это важно. Краткие остроты может часто быть более трудно считать, чем простое хорошо разметило 3 или 4 строки.

Использование, какой бы ни создают лучший descibes логика операции.

0
ответ дан Peter Mortensen 24 November 2019 в 09:39
поделиться

Скажем, Вы решили использовать переключатель, поскольку Вы только работаете над единственной переменной, которая может иметь различные значения. Если бы это привело бы к небольшому оператору переключения (2-3 случая), я сказал бы, что это прекрасно. Если бы кажется, что Вы закончите с больше, я рекомендовал бы использовать полиморфизм вместо этого. Шаблон AbstractFactory мог использоваться здесь для создания объекта, который выполнит любое действие, которое Вы пытались сделать в переключателях. Ужасный оператор переключения будет абстрагирован далеко, и Вы заканчиваете с более чистым кодом.

0
ответ дан source.rar 24 November 2019 в 09:39
поделиться
Другие вопросы по тегам:

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