|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Вот пример подфункции в дельфи: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
я просто не хочу мало мальскую функцию выносить в класс. Ну бывает так, что в классе функция будет ни к селу ни к городу абсолютно. Да и не хочется захламлять интерфейс. Как это решается в шарпе ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 11:32 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 11:55 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 11:58 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
ок. спасибо. Единственный вопрос. В лямбдах можно создавать свои временные переменные ? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 12:22 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
И еще позвольте вопрос. С производительностью проблем там нет ? Нормально, можно спокойно использовать кучу лямбд в функции ? Чисто для улучшения читабельности... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 12:30 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Изюбр...Как это решается в шарпе ?ни как и не зачем. Ну есть в классе некая функция, которая исп. только в одной процедуре(методе) и что? А вот в классе внутренние классы это сколько угодно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 12:45 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
fortibransaИзюбр...Как это решается в шарпе ?ни как и не зачем. Ну есть в классе некая функция, которая исп. только в одной процедуре(методе) и что? А вот в классе внутренние классы это сколько угодно. Не могу с Вами согласится извините. Очень много примеров кода, особенно с различными кейсами и ifами, когда бывает удобно упаковать часть кода (буквально в 3-5 строк) в подфункцию. Гораааааздо приятней читать код: Код: pascal 1. 2. 3. 4. 5. 6.
Сами понимаете - выносить эти функции в КЛАСС это совсем захламлять интерфейс (тогда в классе вместо 5 методов ВНЕЗАПНО станет 20... При том, 15 из них используются только в одной из функций... Поди потом разберись в этом классе, если нужно что-то добавить/переделать. А читать такой код гораздо приятней. Ну всяко приятней чем если под каждым вариантом будет код из 3-5 строк, который нужно анализировать. Я можно сказать фанат минифункций.... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 13:36 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
ИзюбрЕдинственный вопрос. В лямбдах можно создавать свои временные переменные ? Код: c# 1. 2. 3. 4. 5.
fortibransaНу есть в классе некая функция, которая исп. только в одной процедуре(методе) и что? То, что эта функция может быть достаточно объемной, и использоваться, например, в тех же linq statements. Не особенно получится разбираться в коде, когда внутри длинного linq функция на пяток-десяток строк, да еще в нескольких местах. И выглядит чисто внешне это тоже не очень. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 13:41 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Изюбрfortibransaпропущено... ни как и не зачем. Ну есть в классе некая функция, которая исп. только в одной процедуре(методе) и что? А вот в классе внутренние классы это сколько угодно. Не могу с Вами согласится извините. Очень много примеров кода, особенно с различными кейсами и ifами, когда бывает удобно упаковать часть кода (буквально в 3-5 строк) в подфункцию. Гораааааздо приятней читать код: Код: pascal 1. 2. 3. 4. 5. 6.
Сами понимаете - выносить эти функции в КЛАСС это совсем захламлять интерфейс (тогда в классе вместо 5 методов ВНЕЗАПНО станет 20... При том, 15 из них используются только в одной из функций... Поди потом разберись в этом классе, если нужно что-то добавить/переделать. А читать такой код гораздо приятней. Ну всяко приятней чем если под каждым вариантом будет код из 3-5 строк, который нужно анализировать. Я можно сказать фанат минифункций.... в данном конкретном случае лямбда не повысит читабельности кода, а для "лишнего" десятка методов, "захламляющих" класс, есть такие вкустности как модификаторы доступа, регионы, ну и наконец partial ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 15:22 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
pation, Как модификаторы доступа помогут тому кто сопровождает-поддерживает код конкретного класса ? он все равно видит 20 методов. Не уверен что и Partial в данном случае нужен. Хочется почитать один модуль с классом, а не листать кучу файлов. И чтобы все нужное было рядом в нужном месте. Под функции как раз удовлетворяют моему требованию :) Хотя кому как. Я говорю лишь за себя, и создавал тему с вопросом только для себя :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 16:25 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Изюбрpation, Как модификаторы доступа помогут тому кто сопровождает-поддерживает код конкретного класса ? он все равно видит 20 методов. Не уверен что и Partial в данном случае нужен. Хочется почитать один модуль с классом, а не листать кучу файлов. И чтобы все нужное было рядом в нужном месте. Под функции как раз удовлетворяют моему требованию :) Хотя кому как. Я говорю лишь за себя, и создавал тему с вопросом только для себя :)Сказали-же нету, а в студии все удобно и лихо читается и подписывается и переходится и отлаживается и тд и тп. Только знать нужно сие средство разработки и иметь опыт, потом это все влет читается. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 16:40 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Изюбрpation, Как модификаторы доступа помогут тому кто сопровождает-поддерживает код конкретного класса ? он все равно видит 20 методов. Не уверен что и Partial в данном случае нужен. Хочется почитать один модуль с классом, а не листать кучу файлов. И чтобы все нужное было рядом в нужном месте. Под функции как раз удовлетворяют моему требованию :) Хотя кому как. Я говорю лишь за себя, и создавал тему с вопросом только для себя :) смотри сам как удобнее так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.
или так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 19:17 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.03.2013, 21:02 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
ИзюбрДа и не хочется захламлять интерфейс.Где тут интерфейс? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.03.2013, 07:08 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
ну интерфейсом не только сам interface зовется. Но и открытые члены касса. Может я и не полностью корректно употребил. Но интерфейсом я назвал просто "весь набор методов и свойств", которые видит программист при поддержке класса (в том числе и приватно-протектные). И суть была в том, что чем меньше в этом "интерфейсе" левых методов (которые используются только в одной функции, например инкапсулируют некую логику в цикле) тем понятней класс. Просто одно дело когда подфункции складируются в нужной функции, и там используются (а в шарпе получается их еще и передавать между друг другом функции могут, так что опять таки нет нужды выносить их в "интерфейс класса", а просто передать при вызове). А другое дело, когда в классе 20 функций, и нужно пройтись и выяснить, что 15 из них используются только в одном единственном месте и ни в коем случае не могут быть полезны где-то еще. И это хорошо, если будут коменты к методам, и не придется залазить в них. Только и всего. А вообще, Мартин Фаулер все давно расписал http://sourcemaking.com/refactoring/extract-method http://sourcemaking.com/refactoring/decompose-conditional http://sourcemaking.com/refactoring и т.д. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 11:35 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Изюбрну интерфейсом не только сам interface зовется. Но и открытые члены касса. Может я и не полностью корректно употребил. Но интерфейсом я назвал просто "весь набор методов и свойств", которые видит программист при поддержке класса (в том числе и приватно-протектные). И суть была в том, что чем меньше в этом "интерфейсе" левых методов (которые используются только в одной функции, например инкапсулируют некую логику в цикле) тем понятней класс. Просто одно дело когда подфункции складируются в нужной функции, и там используются (а в шарпе получается их еще и передавать между друг другом функции могут, так что опять таки нет нужды выносить их в "интерфейс класса", а просто передать при вызове).Если разделение метода на методы неудобно - зачем это делать? Чтобы не было конфликтов с именами локальных переменных в большом методе - можно разбить его на блоки Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Получается примерно тоже самое, что и с вложенными процедурами в Паскале. ИзюбрА другое дело, когда в классе 20 функций, и нужно пройтись и выяснить, что 15 из них используются только в одном единственном месте и ни в коем случае не могут быть полезны где-то еще.Может есть смысл разделить класс на классы? ИзюбрИ это хорошо, если будут коменты к методам, и не придется залазить в них.Коментарии должны быть только в крайнем случае. Всё должно быть понятно из имён методов, имён их параметров и контекста вызова. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 11:45 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Алексей К, Смысл же не только в том, чтобы "визуально" разделить метод на блоки. Вынесение в подфункции полезно тем, что функцию можно вызвать несколько раз в методе- в цикле например. И разбить на классы не выйдет. Это как из пушки по воробьям. Вот простой пример: нужно пройтись в цикле по некоемому списку, отобрать часть элементов удовлетворяющую условиям, и сделать определенные манипуляции с подходящим элементом. НЕ углубляясь в LINQ (в коем я не спец), данную задачу можно разбить на 2 подфункции: 1. Прохождение в цикле. Проверка условия (первая подфункция). 2. Если условие проходит вызов подфункции (вторая подфункция) для элемента списка. Ради этого создавать целый класс ? И в общий "интерфейс" класса такое тоже не хочется выносить. Потому, что часто такой вот алгоритм только и нужен одной функции. Ибо слишком специфичные действия выполняет, имеющие смысл только для одной функции в одном специфичном месте. Другим методам класса просто не нужна именно данная узко-специфичная последовательность действий. Вот в этом примере подфункции типичный пример их пользы. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 12:07 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
ИзюбрСмысл же не только в том, чтобы "визуально" разделить метод на блоки. Вынесение в подфункции полезно тем, что функцию можно вызвать несколько раз в методе- в цикле например.Ну может быть. ИзюбрИ разбить на классы не выйдет. Это как из пушки по воробьям.Это не Паскаль. Тут для описания класса не надо писать много букв (interface, implementation, прототипы методов и прочая лабуда). Классы могут быть вложенными и приватными. Всё для людей... ИзюбрВот простой пример: нужно пройтись в цикле по некоемому списку, отобрать часть элементов удовлетворяющую условиям, и сделать определенные манипуляции с подходящим элементом. НЕ углубляясь в LINQ (в коем я не спец), данную задачу можно разбить на 2 подфункции: 1. Прохождение в цикле. Проверка условия (первая подфункция). 2. Если условие проходит вызов подфункции (вторая подфункция) для элемента списка.Ну делай два метода. В чём проблема? ИзюбрРади этого создавать целый класс ?Если в классе оказалось настолько много методов, что с ним стало неудобно работать - да. Фаулер это тоже рекомендует, см "выделение класса". ИзюбрИ в общий "интерфейс" класса такое тоже не хочется выносить. Потому, что часто такой вот алгоритм только и нужен одной функции.Ну и что? ИзюбрИбо слишком специфичные действия выполняет, имеющие смысл только для одной функции в одном специфичном месте. Другим методам класса просто не нужна именно данная узко-специфичная последовательность действий. Вот в этом примере подфункции типичный пример их пользы.см "выделение класса". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 12:18 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
ИзюбрНе могу с Вами согласится извините. Очень много примеров кода, особенно с различными кейсами и ifами, когда бывает удобно упаковать часть кода (буквально в 3-5 строк) в подфункцию. Это типичный подход дельфиста, который присматривается к .NET и хочет старое барахло на новые рельсы, сколько таких как ты было, непересчесть. Сам из таких. По делу: забудь про подфункции - это зло. Используй классический ООП подход, которые легко чистается, легко тестируется, легко документируется, легко интеллисенсится - реализация члена в самом классе. Только так и никак иначе. P.S. Речь не о возможности прикрутить делегат или лямбда-метод, речь именно о понимании и нужности подфункций в языке. Авторитетно заявляю, что это 100% не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 12:35 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
МСУ, ну не спорю. тестируемость лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 12:54 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
ИзюбрМСУ, ну не спорю. тестируемость лучше. Доверься нашим советам, не принимай их сразу в сознание, а просто поверь пока нам на слово. Понимание будет немного позже, когда углубишься во всю красоту, богатство и нереальную мощь языка. Когда вернешься к своему вопросу (через несколько месяцев, может и лет) и заново прочитаешь всё, что писал, ты просто посмеешься над собой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 13:31 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
МСУИзюбрМСУ, ну не спорю. тестируемость лучше. Доверься нашим советам, не принимай их сразу в сознание, а просто поверь пока нам на слово. Понимание будет немного позже, когда углубишься во всю красоту, богатство и нереальную мощь языка. Когда вернешься к своему вопросу (через несколько месяцев, может и лет) и заново прочитаешь всё, что писал, ты просто посмеешься над собой :)Прослезился... Но сказано правильно, что-то в этом есть. :-) зы: Это ещё цветочки. Настоящая ломка начнётся, когда дело дойдёт до работы с БД. Отказ от TDataSet и прочих "квадратиков на форме" будет происходить очень болезненно. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 13:40 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Алексей КНастоящая ломка начнётся, когда дело дойдёт до работы с БД. Отказ от TDataSet и прочих "квадратиков на форме" будет происходить очень болезненно. :-) Точно подмечено. Датасеты в пух и прах сносят инакомыслие дельфийца, пожирая большими порциями его моск. Но когда на форум вломится какой-нибудь Алексей К и прокричит во всеуслышанье "датасеты зло, выбрось их на помойку - кури ORM, желательно CodeFirst", дельфиец упадёт пацтол и нервно задёргается в конвульсиях ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 13:47 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
Если ты решил сменить веру, начинай изучать священное писание прямо сейчас: http://it-ebooks.info/book/903/ 1500 страниц удовольствия ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 14:27 |
|
Подскажите какие аналоги подфункций (из Дельфи) есть в Шарпе
|
|||
---|---|---|---|
#18+
The DwarfЕсли ты решил сменить веру, начинай изучать священное писание прямо сейчас: http://it-ebooks.info/book/903/ 1500 страниц удовольствия Проблема не в смене религии, а в смене работы, и потере в Зп. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2013, 15:51 |
|
|
start [/forum/topic.php?fid=20&msg=38203978&tid=1404936]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 190ms |
0 / 0 |