Я не читал эту конкретную книгу, но что касается концепции ...
«Одна вещь» не означает «одна строка кода». «Одна вещь» означает, что все в функции должно быть логически связано.
Я бы поспорил с некоторыми из предыдущих постеров, сказав, что «saveSettings» - это «одна вещь». Может быть, это просто небрежность с формулировками, но я воспользуюсь возможностью, чтобы указать на потенциальную ловушку. В вашем случае это больше похоже на «saveCommunicationSettings», которое, я думаю, легко соответствует определению «одна вещь». Если бы вы добавили «Settings.Default.customerLoyaltyDiscount = ...» в этот список, я бы сказал, что вы, вероятно, находитесь на опасной почве, потому что вы сейчас смешиваете настройки связи с настройками расчета цены.
В реальной жизни решение о том, что такое разумная сплоченность, - это не формула, а суждение, требующее умственных способностей. Должна ли функция, которая вычисляет общую сумму заказа, включать расчет налога с продаж? Можно утверждать, что это две вещи: общая стоимость всех товаров на заказ и расчет налога с продаж. Но вы также можете утверждать, что это только один: найти общую стоимость заказа, что бы это ни значило. На практике я часто принимаю решение исходя из сложности логики. Если все, что требуется для расчета суммы заказа, - это простой цикл, в котором все товары складывают свои цены, а затем извлекают из таблицы ставку налога с продаж и умножают ее, я, вероятно, сделал бы все это в одной функции. Если это еще не все - как система, над которой я работаю в эти дни, расчет цены включает в себя акции по сравнению с заказами, поиск всевозможных скидок, добавление гарантий и т. Д. - нам действительно нужно сломать это до.