Не с точки зрения удобочитаемости, естественно, поскольку вы всегда можете расположить отдельные методы в отдельных строках. Скорее, опасно ли по какой-либо причине объединять слишком много методов? Я использую метод chaining, прежде всего, для экономии места при объявлении отдельных одноразовых переменных и традиционно используя методы возврата вместо методов, которые изменяют вызывающего. За исключением строковых методов, те, кого я беспорядочно цепляю. В любом случае я иногда беспокоюсь о влиянии использования исключительно длинных цепочек методов в одной строке.
Скажем, мне нужно обновить значение одного элемента на основе имени пользователя. К сожалению, самый короткий метод для получения правильного пользователя выглядит примерно так:
SPWeb web = GetWorkflowWeb();
SPList list2 = web.Lists["Wars"];
SPListItem item2 = list2.GetItemById(3);
SPListItem item3 = item2.GetItemFromLookup("Armies", "Allied Army");
SPUser user2 = item2.GetSPUser("Commander");
SPUser user3 = user2.GetAssociate("Spouse");
string username2 = user3.Name;
item1["Contact"] = username2;
Все, у кого есть 2 или 3, длится только один вызов, поэтому я мог бы сконденсировать его как следующее (что также позволяет мне избавиться от потенциального избытка 1):
SPWeb web = GetWorkflowWeb();
item["Contact"] = web.Lists["Armies"]
.GetItemById(3)
.GetItemFromLookup("Armies", "Allied Army")
.GetSPUser("Commander")
.GetAssociate("Spouse")
.Name;
По общему признанию, он выглядит намного дольше, когда он находится в одной строке, и когда у вас int.Parse(ddlArmy.SelectedValue.CutBefore(";#", false))
вместо 3
. Тем не менее, это одна из средних длин этих цепей, и я могу легко предвидеть некоторые из более длинных отсчетов. Исключая читаемость, есть ли что-нибудь, о чем я должен беспокоиться в отношении этих цепей методов 10+? Или нет никакого вреда в использовании действительно очень длинных цепочек методов?