|
9 / 4 / 0
Регистрация: 09.02.2023
Сообщений: 62
|
||||||||||||||||
Как корректно переносить длинные команды на разные строки, по аналогии с method chaining?18.11.2024, 04:51. Показов 2321. Ответов 38
Приветствую всех! Method chaining (цепочка вызовов) - основная концепция Fluent Interface. Примером использования служит LINQ, а также операторы конвейера (pipe operator), которые есть в некоторых языках - например, оператор "|>" в F#.
Однако, на сколько я знаю, есть правила, по которым можно корректно переносить длинные строки кода на разные строки в редакторе без использования специальных операторов и без разрыва команды (без создания промежуточных переменных). Подскажите, пожалуйста, как можно корректно разделить на разные строки данную строку кода:
0
|
||||||||||||||||
| 18.11.2024, 04:51 | |
|
Ответы с готовыми решениями:
38
Как переносить длинные строки? Как переносить длинные строки в коде ООП?
|
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,218
|
|
| 18.11.2024, 12:20 | |
|
0
|
|
|
|
|
| 18.11.2024, 12:30 | |
|
IamRain,
Не по теме: Ну назвалося так...
0
|
|
|
|
|
| 18.11.2024, 12:30 | |
|
Honey Badger, то что ты не понимаешь суть метода TOut, который привел - это пол беды. Но то что ты его связал с переносом строк - это 100% провал.
Тебе сразу в первых же двух постах намекнули, что затронутый вопрос - это не то, о чем следует переживать. Зачем упорно продавливать этот вопрос на основании каких-то одному тебе известных правилах? Т.е. по сути у тебя вопросы бестолковые, каждый раз. Вот и получаешь "оплеухи".
0
|
|
|
9 / 4 / 0
Регистрация: 09.02.2023
Сообщений: 62
|
||
| 18.11.2024, 12:49 [ТС] | ||
|
А метод Pipe преобразует возвращемое значение метода, из которого он вызывается, в аргумент следующего метода, позволяя избавиться от сильной вложенности аргументов за счет преобразования их в последовательные вызовы. Удобство записи это лишь бонус, на котором я в данном вопросе акцентировал внимание.
0
|
||
|
|
|||
| 18.11.2024, 13:04 | |||
|
Honey Badger, трудный ты какой-то.
Мне не надо ничего советовать читать - все что надо, давно уже прочитано. Т.е. замена одного на другое как-то спасла ситуацию? Ну бред же. Добавлено через 1 минуту
0
|
|||
|
9 / 4 / 0
Регистрация: 09.02.2023
Сообщений: 62
|
||||
| 18.11.2024, 13:32 [ТС] | ||||
|
0
|
||||
|
|
||
| 18.11.2024, 13:46 | ||
|
Honey Badger, выходит, тебя "унизили" первые отвечающие. Общий посыл этих ответов был таков: ты обращаешь внимание совсем не на то, на что следует.
Если ты эту чушь будешь демонстрировать на каком-либо собесе, то твоя 'забота' о мнимом зрительном удобоваримом восприятии кода вывалится в полный швах. Это последнее, о чем тебя спросят где-либо, если вообще спросят. А вот на то, что ты готов поступиться производительностью/временем или еще чем-нибудь ради надуманных правил - на это точно обратят внимание, и не в твою пользу.
0
|
||
|
1337 / 917 / 264
Регистрация: 08.08.2014
Сообщений: 2,756
|
||
| 18.11.2024, 14:19 | ||
|
Тот же код, записанный через неизвестный метод расширения, вынуждает идти изучать документацию/сигнатуру этого метода. И запоминать. И название 'Pipe' само по себе никаких подсказок не даёт о сути происходящего. Ну т.е. в изначальном коде, даже какие-то свои методы/классы имеют названия, по которым хотя бы примерно можно понять их назначение. А 'Pipe' - что оно значит в данном контексте?
1
|
||
|
9 / 4 / 0
Регистрация: 09.02.2023
Сообщений: 62
|
||||
| 18.11.2024, 14:36 [ТС] | ||||
|
0
|
||||
|
|
||
| 18.11.2024, 14:47 | ||
|
Дело твое, Honey Badger, в конце концов пробивать дорогу лбом а не умом - не запретишь.
0
|
||
|
9 / 4 / 0
Регистрация: 09.02.2023
Сообщений: 62
|
|||
| 18.11.2024, 14:48 [ТС] | |||
|
0
|
|||
|
1337 / 917 / 264
Регистрация: 08.08.2014
Сообщений: 2,756
|
||
| 18.11.2024, 14:58 | ||
|
Вариант через дополнительный метод-расширение 'Pipe' - чтобы понять, что он делает, надо предпринять дополнительные действия. Это неудобно. P.S.: если когда-то такой метод появится в стандартных библиотеках .NET, т.к. он будет востребован и удобен, тогда другое дело. А так - усложнение кода.
0
|
||
|
9 / 4 / 0
Регистрация: 09.02.2023
Сообщений: 62
|
|||
| 18.11.2024, 15:26 [ТС] | |||
|
P.S. Только что наткнулся на следующую инфу: для c# можно скачать из NuGet библиотеку, которая добавляет методы расширения Pipe с нужными перегрузками. Автор работает над тем, чтобы функциональность добавили и в язык. Возможно, скоро появится...) https://dev.to/winstonpuckett/... sions-5d0j
0
|
|||
|
|
||||||
| 19.11.2024, 04:10 | ||||||
|
Ух... чуть накину на вентилятор. В идеале стоит расписывать вообще так
- возможность адекватно продебажить(!) В момент когда этот код потребует отладки, все эти Pipe и прямая передача результата в метод вызовет боль. Меня колега долго переубеждал расписывать, и таки был прав (но я был вредный, и отказывался менять привычки). - в логах, когда упадет на строке #123 с каким-нибудь "очевидным" NullReferenceException, а там будет ваша вермишель из цепочки методов.... Ну удачи угадать что стало причиной. Подход через отдельные строки сразу даст понимание где проблема. - компилятор один фиг неявно определяет локальные переменные, когда мы тупо засовываем результат метода в другой метод. Т.е. с точки зрения перфоманса мы ничего не теряем. А вот запаковывание в Pipe это уже доп-расходы на вызов метода и всякие замыкания. - такой подход в целом читаем (при условии что нейминг локальных переменных осознанный). - если отладка или внедрение подразумевают различные временные правки точечных частей кода -- это гораздо проще делать, когда он "построчный". Грубо говоря если я захочу подсунуть вместо файла свои данные, мне достаточно после ReadAllText подсунуть strData = "mock data"; //TODO: REMOVE AFTER DEBUG!!!. Во-первых это элементарно добавляеться-убирается. Во-вторых это прям сразу броситься в глаза при комите, если забуду убрать.
3
|
||||||
|
9 / 4 / 0
Регистрация: 09.02.2023
Сообщений: 62
|
||||||||
| 19.11.2024, 06:16 [ТС] | ||||||||
|
Во-первых, вызов каждого метода (не важно из LINQ или собственных методов) пишется на отдельной строке именно потому, что каждый из них можно отдельно закомментировать или оставить комментарий к нему, не нарушив работоспособность цепочки. Во-вторых, результаты, возвращенные каждым из этих методов, показаны в отладчике. Если вы отдаете себе отчет в том, что каждый из методов должен вернуть в случае использования темповых переменных, то и это у вас проблем вызвать не должно.
0
|
||||||||
|
|
||||||||||||||||||||||
| 19.11.2024, 14:31 | ||||||||||||||||||||||
P.S. В целом можно писать как душе угодно, в случае когда за кодом работаете только вы. Хоть в одну строчку. Даже самые упорные личности как правило достигают просвещения и начинают применять иные подходы (особенно после 10+ часов отладки проекта, сразу познаешь бытие и накой эти Unit-тесты). В команде вас ждет два варианта: - каждый пишет как пожелает, и вы все тихо ненавидите друг-друга. - у вас есть тимлид, который гоняется с тапком за каждым, кто не следуют code style.
1
|
||||||||||||||||||||||
|
9 / 4 / 0
Регистрация: 09.02.2023
Сообщений: 62
|
||
| 19.11.2024, 14:55 [ТС] | ||
|
0
|
||
|
|
||
| 19.11.2024, 21:03 | ||
|
0
|
||
| 19.11.2024, 21:03 | |
|
Помогаю со студенческими работами здесь
39
Firefox перестал корректно переносить profile Создание команды Подбор в документе по аналогии Как корректно вызвать ModelView propertychanged из команды? Как переносить строки в заголовке колонки?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|