Доброго времени суток, господа!
Свой первый пост на хабре пишу в некотором недоумении после очередного рабочего дня. Работаю в одной малоизвестной IT-конторе, занимаюсь написанием хранимых процедур и функций, формирующих бизнес-логику компании. Опыт работы у меня всего 1 год, поэтому в процессе разработки возникает много вопросов и огромное желание переписать часть уже готового кода так, как я считаю правильным, а не как он есть сейчас.
Приведу конкретный пример. Есть пакет примерно следующей структуры:
create or replace package pkg_import is
function import_table1(param in number, err out number) return number ;
function import_table2(param in number, err out number) return number ;
/*и так далее, около 30 штук*/
end pkg_import;
create or replace package body pkg_import is
function import_table1(param in number, err out number)
return number is
begin
err :=0;
if param = 1 then
/*удаление данных из таблице table1*/
end if;
if param = 2 then
/*удаление данных из таблицы table1 для ключевого поля, равного значению param*/
end if;
/*ещё какие-то проверки*/
return 0;
exception
when others then
err:=sqlcode;
return -1;
end import_table1;
/*и другие функции по тому же принципу*/
end pkg_import;
/
Таблицы table1, table2… table 30 отличаются названиями и количеством полей. С таким количеством однообразных функций в пакете я смирился (не представляю, как можно сделать по-другому с сохранением требуемой производительности и читабельности кода), но в самих функциях смотреть на эти бесчисленные if-ы (которых по 6-7) штук мне просто неприятно. Ввиду сложности проверок по значению param (на предприятии более сложная логика, чем описана выше, но суть та же) приходится в каждой функции писать по 5-6 UPDATE-ов на одну и ту же таблицу.
Меня раздражает, что куски кода много где дублируются. Меня раздражает, что при создании новых функций в этом пакете приходится вставлять ещё столько же почти повторяющегося кода, но руководство постоянно делает замечания, когда я пытаюсь написать по-другому (например, переписать несколько update-ов через один с помощью case). И я не уверен, стоит ли мне отстаивать своё право писать хороший код в своих пакетах и процедурах, понятный мне и простой для меня, если с этими объектами кроме меня через пару лет будут работать совсем другие люди, которым, возможно, 10 UPDATE-ов проще, чем один, но более сложный.
Подскажите, господа, неопытному программисту. Стоит ли мне убивать время, пытаясь привести код к какой-то другой более короткой и изящной форме или же это — нормальная практика в программировании: дублировать однообразные куски кода вплоть до нескольких тысяч строк, если это один из самых простых подходов к решению проблемы, а руководству большего от меня и не требуется? Я хочу делать свою работу лучше и качественнее, но в данной ситуации я попросту не знаю, что верно.