Как Вы предпочитаете организовывать определения исключения? [закрытый]

Я думаю, что union all это путь. Я бы сделал:

select productName, sum(input) as input_qty, sum(output) as output_qty
from ((select productName, qty as input, null as output
       from input
      ) union all
      (select productName, null, qty
       from output
      )
     ) io
group by productName;

Обратите внимание, что productName появляется только один раз в наборе результатов. Я не вижу смысла включать его дважды. Если нет строки output (или нет input), то соответствующий qty будет NULL.

8
задан Jonathan Leffler 3 May 2015 в 02:50
поделиться

3 ответа

Я использую следующие подходы:

  • Класс исключений в отдельном файле: когда это универсально и может быть брошено больше чем одним классом
  • Класс исключений вместе с классом, бросающим его: когда существует только один такой класс. Это имеет смысл, потому что исключением является часть интерфейса того класса

Вариант на последнем делает исключение членом класса броска. Я раньше делал это, но нашел это громоздким.

3
ответ дан 5 December 2019 в 15:28
поделиться

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

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

5
ответ дан 5 December 2019 в 15:28
поделиться

В C++ я всегда определял классы, которые я буду использовать в качестве исключений в том же пространстве имен как классы, которые бросают их, соразмещая их в том же заголовке. Для исключений общего назначения, которые будут совместно использованы классами, я использую единственный заголовок для собирания в группу их, наряду с другими служебными функциями и классами.

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

3
ответ дан 5 December 2019 в 15:28
поделиться
Другие вопросы по тегам:

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