SergXP
Новичок
Очень нужна помощь профи)
Читаю книгу Роберта Мартина - Чистый код.
Кто-нибудь может объяснить и на примере показать, о чем он говорит?
Спасибо!
Читаю книгу Роберта Мартина - Чистый код.
Пытаюсь вникнуть и набросать классы на php, но похоже я не совсем понял о чем он говорит(Выходные аргументы
Аргументы естественным образом интерпретируются как входные данные
функции. Каждый, кто занимался программированием более нескольких лет,
наверняка сталкивался с необходимостью дополнительной проверки аргументов, которые
на самом деле оказывались выходными, а не входными. Пример:
appendFooter(s);
Присоединяет ли эта функция s в качестве завершающего блока к чему-то
другому? Или она присоединяет какой-то завершающий блок к s? Является ли s
входным или выходным аргументом? Конечно, можно посмотреть на сигнатуру
функции и получить ответ:
public void appendFooter(StringBuffer report)
Вопрос снимается, но только после проверки объявления. Все, что заставляет
обращаться к сигнатуре функции, нарушает естественный ритм чтения кода.
Подобных «повторных заходов» следует избегать.
До наступления эпохи объектно-ориентированного программирования без
выходных аргументов иногда действительно не удавалось обойтись. Но в ОО-языках
эта проблема в целом исчезла, потому что сама функция может вызываться для
выходного аргумента. Иначе говоря, функцию appendFooter лучше вызывать
в виде
report.appendFooter();
В общем случае выходных аргументов следует избегать. Если ваша функция
должна изменять чье-то состояние, пусть она изменяет состояние своего объекта-
владельца.
Кто-нибудь может объяснить и на примере показать, о чем он говорит?
Спасибо!