Если говорить про конкретный пример, то он просто бессмысленный, даже с точки зрения житейской логики.
Учитывая, что
if ($isTestOrder)
можно прочитать, как
ЕСЛИ переменная не занимает памяти
то проверка выглядит просто глупостью. "Если переменная не занимает памяти, то не передавать её. Так мы с экономим память!" Если переменная и так не занимает никакой памяти, то какого еще дополнительно выделения памяти она может потребовать?
Если говорить про передачу параметров вообще, то оба неправы, но тимлид ближе к истине и надо всегда следовать его рекомендации не экономить на пустом месте. А экономить только
адресно, когда экономия очевидна и востребована.
В общем случае тут
не будет никакой экономии, ни на спичках, ни без.
При передаче параметра внутрь метода под него выделяется дополнительная память
- это чушь и неправда.
При передаче в функцию параметра, который в принципе может занимать хоть какую-то осмысленную память (то есть не числа, не булева значения, и не null), память под него НЕ выделяется.
- Объекты изначально передаются по ссылке
- Строки и массивы - с использованием механизма copy-on-write. Что означает, что память будет выделяться только если переданное значение будет изменено в процессе обработки. А если оно будет только считываться, то дополнительной памяти занимать не будет
Для всех остальных типов, как было правильно сказано тимлидом - это будет экономия на спичках.