Допустим у меня есть кусок кода (смысловое дублирование, то есть по смыслу реализуют одно и то же)
$query = (new QueryChain())->select('*')
->from($this->store())
->where([$pk => ":$pk"])
->limit(1)
->build(); //Естественно этот кусок индивидуален для каждого запроса
$statement->bindValue($pk, $key); //И это тоже индивидуально!
$statement = $this->connection->prepare($query);
Или стоит завести отдельный метод вида prepareQuery($query, $params) //@return PDO Statement
UPD. Дублируются строки максимум в 2-3 методах.
Я понимаю что можно потом запутаться, но я уже выработал привычку генерить phpDOC для каждого метода.