Разрабатываю на php довольно крупный (для одного человека) проект (порядка 100 различных методов), в основном изъятие данных из базы в том или ином виде. И довольно часто у меня возникает один и тот же вопрос:
Вот, например, есть метод (условно) "Достать все яблоки из корзины", а есть метод "Достать все те же яблоки из корзины, но без помятых\сломанных".
Как лучше это сделать - в одном методе, передавая тип необходимой информации, или, все же, разбить на 2 метода.
Получается двоякая ситуация: Вроде 2, практически одинаковых метода, отличаются лишь запросом к БД, а стороннему человеку, который будет потом это читать, может быть не сразу ясно, если объединить это все в один метод (даже с комментариями).
Может есть какие-то стандарты на эту тему, но я пропустил их, когда гуглил вопрос?
DRY - дублирование кода плохо. Старайтесь минимизировать повторы. Если при этом вы получаете слишком объемные методы, то возможно их стоит вынести в отдельную абстракцию (класс).
Если работаете с БД много то посмотрите в сторону паттернов баз данных: ActiveRecord, ORM, DAO. Возможно какие из их PHP-реализаций смогут облегчить и упростить вам работу с базой, минимизировать запросы.
Получаются не то чтобы объемные, просто выходит ветвление. Т.е. передаем в метод $type, а дальше при помощи if или switch строим запрос. Это нормальная практика? На данном этапе переписывать все я уже не могу, и не хочу :) Но спасибо за ссылки. Обязательно прочту и разберусь на великое будущее.
@samoilenkoevgeniy если у вас условием отбора выступает только type тогда да. Если условий много, вы можете передавать массив conditions например. Вот пример pastebin.com/UgwKLxua
Это один из вариантов, если вы используете PDO вместо SQL будете подготавливать параметры.
Также можете упростить себе жизнь и код добавив MVC в архитектуру.