Один из функций класса, делать или нет?

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

Вот некоторые из функций.

public function getObject($query, $object) { return $this->db->prepare("$query")->execute()->fetch(PDO::FETCH_OBJ)->$object; } public function getArray($query) { return $this->db->prepare("$query")->execute()->fetchAll(PDO::FETCH_NUM); } public function insertArray($query, $array) { return $this->db->prepare("$query")->execute($array); } 

Будет ли это в конечном итоге сталкиваться с проблемами? Или их называют одной секцией за раз, как если бы они были на их собственной линии?

Благодарю.

Solutions Collecting From Web of "Один из функций класса, делать или нет?"

Использование цепных методов в одной строке, подобной этой

 return $this->db->prepare("$query")->execute()->fetch(PDO::FETCH_OBJ)->$object; 

это то, что Роберт Мартин называет «Train Wrecks» в « Чистом коде» (pg 98/99) . Трудно читать и «обычно считается неаккуратным», и его следует избегать для более читаемых

 $statement = $this->db->prepare("$query"); $statement->execute(); $result = $statement->fetch(PDO::FETCH_OBJ); return $result->$object; 

Обратите внимание, что я исправил код в фрагменте выше, поскольку ваш однострочный шрифт не будет работать, потому что execute возвращает логическое значение , поэтому вы не можете вызвать его fetch :

bool PDOStatement::execute ([ array $input_parameters ] )

Другими словами, вы не можете писать это как однострочное утверждение в любом случае.

Также обратите внимание, что метод Chaining очень часто является нарушением Закона Деметры , в котором говорится, что

метод M объекта O может вызывать только вызовы методов следующих типов объектов:

  • O сам
  • Параметры M
  • любые объекты, созданные / созданные в M
  • Прямые объекты O
  • глобальная переменная, доступная O, в объеме M

Не следовать LoD обычно приводит к Mockfests в вашем UnitTests и делает ваше приложение жестко связано с гораздо большим количеством классов, чем это необходимо, что, в свою очередь, ухудшает повторное использование и увеличивает время, необходимое для изменений (между прочим).

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

Если по какой-либо причине соединение с базой данных выходит из строя, это может вызвать FATAL_ERROR, потому что один из объектов вернет false.