У меня есть функция, которая загружает список вещей из базы данных и помещает их в список выбора. Функция выглядит следующим образом: (псевдокод)Это слишком много строк и слишком много вложенных блоков?
protected function Foo()
{
try {
get pdo instance
prepare statement
if (pdo query executes)
{
while (row = fetched rows)
{
do stuff with row
}
}
}
catch (PDOException $ex)
{
do error stuff here
}
}
NetBeans дает подсказку кода, что это слишком много линий и слишком много вложенных блоков. Я лично считаю, что эта функция должна быть приемлемой. Я также чувствую, что разбить логику на более мелкие функции - это немного бесполезно, но почему бы небезопасные мне лгать?
поэтому мои вопросы заключаются в следующем:
Это плохая логика или я хорошо идти вперед? Я хотел бы приветствовать любые предложения о том, как я могу перепроектировать функцию для соответствия ограничениям NetBean.
редактировать:
Я не буду отвечать на свой вопрос, но в этом случае был один вложенный блок, который был не нужен. Pdo извлекается из одноэлементного класса, у которого есть блок try/catch. Мне не нужно повторять это снова в этой функции, потому что исключение уже было пойманным.
редактировать 2:
Удаление блока попытка поймать был так же, как грабят Питера, чтобы заплатить Павлу. Поэтому, если исключение создается при создании экземпляра pdo, оно не останавливает выполнение. Таким образом, мы пытаемся вызвать оператор prepare для объекта PDO, который не был инициализирован правильно. Это заставляет нас вводить еще одно испытание перед вызовом подготовки, таким образом, просто возвращаясь к переделке исходной функции.
По моему опыту, это означает, что где-то вдоль линии моя логика настилается. Я собираюсь пересмотреть свой дизайн и вернуть Холла, если у меня есть что-то достойное сказать.
Еще раз спасибо всем
По правде говоря, это 4 линии, которые на самом деле выполняют действие в коде с 5 уровнями глубины, но это не должно быть слишком плохо. Просто попробуйте написать несколько строк кода, и он должен уйти (или отключить функцию в Netbeans). –
Логика выглядит отлично. Как правило, вы можете абстрагировать настройку экземпляра PDO в свой собственный класс со своей собственной архитектурой отчетов try/catch/error. Затем вы можете просто захватить результирующий указатель уровня класса к экземпляру PDO и принять в остальной части вашего кода, что вам не нужно обертывать все в try/catch, и вы можете просто проверить, выполняется ли запрос или нет. Прохождение строк отлично, хотя (не уверен, какой язык), вероятно, имеет функцию типа fetchAll, которая выгружает ее в аккуратный маленький массив для вас. – joshstrike
Спасибо, ребята, я так понял! У меня есть экземпляр PDO в одноэлементном классе и в блоке catch try. Причина, по которой у меня было время для входа в массив, - каждый результат, например, помещается в другой объект - myObject-> InsertChild (row); если вы получите мой дрейф. спасибо Эрик и Джош за руководство. – Shibby