У меня есть фрагмент кода PL/SQL, который выглядит примерно так:Избегайте жесткое кодирование в случае, если оператор с несколькими условиями
IF l_order = 'Cancelled At Order Stage' OR l_order = 'Stopped at Billing Stage' THEN
Do something
END IF;
IF l_type = 'Internal' OR l_type = 'Contracted' THEN
Do something else
END IF;
я хотел бы, чтобы избежать жесткого закодированные строк, поэтому я считал простой массив. Тем не менее, это похоже на множество дополнительных строк кода (создание типа, создание массива типа, итерация через этот массив), чтобы делать то, что у меня есть.
Каковы рекомендации по тому, что здесь делать? Я знаю, что это очень минимальная проблема, и я, вероятно, микро оптимизирую, но я бы хотел знать, что такое хорошая практика.
Вы можете параметризовать строки в локальные переменные, такие как 'l_cancelled: = 'Отменено на этапе заказа';' и держать их всех в верхней части вашей функции/proc/package. – mmmmmpie
@mmmmmpie: Это была моя мысль. Вы бы всегда рекомендовали сделать это, чтобы избежать жесткого кодирования, даже если есть только одна переменная? Во-вторых, не могли бы вы всегда держать их в верхней части функции/пакета, или вы бы поставили их чуть выше определенного блока, который им нужен, поэтому они никогда не объявляются/не создаются, если это необходимо? –
Это зависит от того, насколько параметризованным вам нравится ваш код. Я видел, как архитекторы требуют таких вещей, как 'char comma = ',';' поэтому YMMV полностью на этом. Во-вторых, предпочтение разработчика/архитектора в том, где вы их определяете. Помогает ли PL/SQL, где вы их заполняете? Нет, но читаемость может. Если мне нужно идти за вами и работать над вашим кодом, я бы предпочел бы, чтобы это строковое объявление либо a) хранилось в таблице в самом DB (например, в поле flex), либо b), заполненном в самом начале. В-третьих, у вас не должно быть переменных, объявленных и никогда не используемых, если вы обнаружите, что в этой ситуации вы слишком гранулированы. – mmmmmpie