powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / IntelliSense для Func<> Action<> ?
25 сообщений из 77, страница 3 из 4
IntelliSense для Func<> Action<> ?
    #38844039
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Не злите МСУ :) Он из дельфистов.

И зря вы так про Дельфийцев. Те, кто поработал на "низкоуровневом" языке (Дельфи, C++) до C# они гораздо больше понимают. Т.к. не раз и не два писали свои собственные компоненты, видели код VCL и в 90% имели дело с WinApi.
Это хорошая база и фундамент. А уж если и на ассемблере пришлось пописать немного, то вообще замечательно.

А студенты, которые никогда на C++ не создавали свой оконный класс, которые про Message loop никогда не слышали, а сразу сели за "высокоуровневый" C#, вот они действительно ничего не понимают.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844040
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиProBiotek,
авторпросто есть желание писать код в стиле Дельфи
пишите, в чем проблема?- но на Делфи, командная разработка? - не не слышал..

Вот-вот. Я этого никогда не понимал. «ХОЧУ ПЕЙСАТь КАК НА ДЕЛЬФЕЙ» — так пиши на Дельфи, хрен ли ты лезешь туда, чего понять тупо не в состоянии.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844042
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekhVostt,

Не злите МСУ :) Он из дельфистов.

И зря вы так про Дельфийцев. Те, кто поработал на "низкоуровневом" языке (Дельфи, C++) до C# они гораздо больше понимают. Т.к. не раз и не два писали свои собственные компоненты, видели код VCL и в 90% имели дело с WinApi.
Это хорошая база и фундамент. А уж если и на ассемблере пришлось пописать немного, то вообще замечательно.

А студенты, которые никогда на C++ не создавали свой оконный класс, которые про Message loop никогда не слышали, а сразу сели за "высокоуровневый" C#, вот они действительно ничего не понимают.

Я ничего протиф дельфей не имею. Просто если уже начинать спор где чего есть/нет, то дельфи сольёт, я тебе обещаю. Начнём с LINQ, м?
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844044
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оу не в курсе, что в Delphi Prism он таки появился
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844045
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttВот-вот. Я этого никогда не понимал. «ХОЧУ ПЕЙСАТь КАК НА ДЕЛЬФЕЙ» — так пиши на Дельфи, хрен ли ты лезешь туда, чего понять тупо не в состоянии.

Да ну вас...
Я всего лишь спросил в тебе "а есть ли в C# аналог того, что есть в Дельфи". А вы тут себе уже навыдумывали блин чего-то.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844046
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что такое красивы код? в контексте программирования, кто знает?
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844048
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekДа ну вас...
Я всего лишь спросил в тебе "а есть ли в C# аналог того, что есть в Дельфи". А вы тут себе уже навыдумывали блин чего-то.

Просто изначально вложенные функции не нужны, даже если бы они были, они бесполезны. Для организации кода это только вред, так как функции должны быть как можно меньше и решать одну задачу. Вложенные функции превращают эту идею в какую-то вакханалию. Может сразу внутри функции разрешить создавать свои классы? Отдельные неймспейсы внутри функции? Это всё тонкая грань, чтобы упасть лицом в говнокод.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844052
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степичто такое красивы код? в контексте программирования, кто знает?

Красивый и читабельный .


Есть разница ?
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public void foo(List<String> answers) {
    for (int index == 0; index < this.size; index ++) {
        this.answer = answers.get(index);  
        if (this.answer == Answers.DEFAULT_ANSWER) {
            this.count = this.count + SOME_CONSTANT;
        } else {
            this.count = this. count - SOME_CONSTANT;
        }
        this.saveAnswer();
    }
}



и
Код: c#
1.
2.
3.
4.
5.
6.
7.
public void processAnswers(List<String> answers) {
    for (String answer : answers) {
        this.setAnswer(answer);  
        this.changeCounter();
        this.saveAnswer();
    }
}


Сколько секунд вы потратили, чтобы ПОНЯТЬ что делает первый код, а сколько второй ?

Если вы заметили, что второй код понятнее, поздравляю, вы готовы начинать изучать методы рефакторинга, и в частности его паттерн Extract Method, один из полу-сотни паттернов :)
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844059
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
ответ не верный, читайте вопрос - в контексте программирования, а не в контексте языка!
еще попытка
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844060
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttПросто изначально вложенные функции не нужны

Да да, раскажите мне, Дельфийцу какие они бесполезные, эти вложенные функции :)

А лучше откройте VCL из Delphi и поизучайте его. Особенно те методы, где есть ассемблерные под-функции.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844062
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
ассемблерные вставки, это то чего так не хватает в net!
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844070
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиProBiotek,
ответ не верный, читайте вопрос - в контексте программирования, а не в контексте языка!
еще попытка

Ок. Попытка №2.

Именно в констектсе программирования - разбиение метода на подфункции играет огромную роль.Сколько секунд вы потратили на чтение первого примера кода и второго в 17058813 ? Разбивать на функции нужно, это ясно.

Теперь переходим к преимуществам подфункций.
Они не засоряют интерфейс класса!

Чтобы в C# сделать рефакторинг и получить красивый код, нужно сделать еще 3-4 дополнительные метода в классе: проверка валидности входных параметров, биндинг этих параметров на бизнес модель, и т.д. И так для каждого публичного метода.

Причем эти под-методы нужно строго одному методу, который их и использует. Если у вас 5 публичных методов класса получают разные параметры, то им бесполезны методы валидации соседних методов. Для каждого из них придется создать кучу приватных методов в классе.
В итоге в классе будет 5 публичных методов + 20 приватных. 20 это валидация и мапинг, нужные только каждому методу.

Вы тратите внимание при чтении класса, пытаясь осознать все эти 20 методов, когда вам нужно сконцентрироватся на 1 методе.
Подфункции убирают эту проблему . Они хранятся в самом методе и не захламляют интерфейс. Все чисто, читабельно, понятно:

Код: c#
1.
2.
3.
4.
5.
for (String answer : answers) {
        this.setAnswer(answer);  
        this.changeCounter();
        this.saveAnswer();
    }



PS. Что касается производительности.
Компилятору ни-че-го не стоит вынести подфункции в приватные-статические методы класса во время трансляции кода. Что он и делает с лямбдами см 17057449 .
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844075
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekДа да, раскажите мне, Дельфийцу какие они бесполезные, эти вложенные функции :)

А лучше откройте VCL из Delphi и поизучайте его. Особенно те методы, где есть ассемблерные под-функции.

Давай без привязки к языку? Я уверен, и не только я, что функции в несколько экранов (где ты собираешься заюзать вложенные функции) -- зло, потому что это гумно пахнет отвратительно, и даже по Фаулеру, очень плохо.

А теперь с привязкой, архитектура корпоративных приложений предусматривает жёсткую декомпозицию, использование архитектурных шаблонов, куда вложенные функции не укладываются никаким боком.

С практической точки зрения, у тебя одна большая функция, где ты втулил вложенные функции, и в чём проблема? В отсутствии интелисенса? В рамках одного файла, где поднял глаза и нашёл определение?

Проблема высосана из пальца, обсужать её глупо и бесперспективно. Не понимаю даже о чём спич.

И зачем ты мне советуешь лезь в VCL, если мне делфи не нужны ни по работе, ни для души? Зачем мне это? Я не мазохист.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844077
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekТеперь переходим к преимуществам подфункций.
Они не засоряют интерфейс класса!

Про приватные функции, кажется, ты слыхом не слыхивал, да?
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844080
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek Подфункции убирают эту проблему . Они хранятся в самом методе и не захламляют интерфейс. Все чисто, читабельно, понятно:

Это какое-то гумно, честно. Я даже обсуждать такой ущербный подход не собираюсь. Функции должны быть короткими (не больше 1-1/2 экрана, за исключением оч. редких случаев), они должны быть выразительными, тестируемыми, с возможностью инъекций, аспектов, контрактов -- это всё вложенным функциям не снилось. Нафиг мне вложенные фукнции? ЧТобы навести ещё больше бардака? Ни одного, ни единого преимущества, поэтому их нет в C#, и никто не жалуется, кроме заблудших дельфистов, которые не умеют быть гибкими.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844087
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
программирование уже давно стало групповым ремеслом ( командным ), даже само понятие красивый код
уже подразумевает групповое командное обсуждение.
красивый код это
1 код написанный согласно общепринятым нормам и рекомендациям, ( название типов, переменных, методов и т.д.)
"общепринятым" - читать как красивый в контексте команды или всего языкового сообщества.
P.S. я уж опустил понятие спецификации, ибо он не скомпилится ))
2 Достаточно документированный для быстрой адаптации новых членов команды или для использования
его снаружи.
3 Иметь "моральные скрепы" - обязательства. такие как: не менять состояние объекта без необходимости через события
sender ( трудноуловимое изменение при чужом сопровождении ) или акцентировать это действие, при инициализации по месту
лямбдой , если более трех строчек кода, выделять в отдельный метод и т.д. ( у Липперта много об этом)
ну и все ))
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844093
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,
ну да самое главное забыл, тестируемый ( прочитал хвоста ))
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844095
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Я шутливо предложил поглядеть на VCL, чтобы увидеть как используются вложенные функции и как они чистят код в плане читабельности.

Приватные функции как раз и засоряют интерфейс класса.
Программисту, который поддерживает этот класс, без разницы приватные они или нет. Они перед его глазами висят, и рассеивают его внимание. Вглядываясь в 20 методов класса, вернувшись к нему через год, приходится вспоминать для чего эти методы, всем ли методам класса они нужны, или только одному из них.

В принципе можно скрыть вспомогательные методы, которые используют только 1 метод с помощью #region. Но тут появляется некоторый риск, что они случайно "уплывут" от метода, который их использует, если кто-то (да хотя бы и сама среда, когда вы просите ее заимплементить методы интерфейса) добавит свою функцию между.
Вложенные методы просто физически не смогут "уплыть" от использующего их метода. Они в нем. Компилятор без проблем может их вынести в статик методы на этапе компиляции, когда они уже не будут мозолить глаза программисту.. Синтаксический сахар однака :)

Просто, когда я писал на Дельфи, мне было очень приятно писать вложенные методы. Не утверждаю, что без них нельзя жить :) Не делайте их мухи слона. Я не бегаю с воплями "C# плох, там нету того, что есть в Дельфи", и не предлагаю мерятся "кто круче, C# или Дельфи".

Вчера я решил создать эту темку, чтобы узнать нету ли какого-то аналога. Только и всего.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844101
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
я просто делюсь
авторОни перед его глазами висят, и рассеивают его внимание. Вглядываясь в 20 методов класса
вполне реально и актуально, я делаю частичный класс и весь мало нужный хлам скидываю туда, что бы не мешался.
авторчерез год, приходится вспоминать для чего эти методы, всем ли методам класса они нужны, или только одному из них.
и такое часто было, чешешь репу, что я тут понаписал, поэтому не ленюсь или подписываю комментариями
или внятное название метода что бы не заблудиться.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844113
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Да, в принципе вложенный класс не протестируешь отдельно. Согласен.
Нужно тестировать сам методы, и вложенный метод должен быть протестирован тем самым.

С другой стороны, признаю, что вложенные методы могут быть не простыми, и требовать отдельного юнит-тестирования.

Ок. Может все это и перевешивает плюсы от вложенности методов :)
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844116
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekПриватные функции как раз и засоряют интерфейс класса.
Программисту, который поддерживает этот класс, без разницы приватные они или нет. Они перед его глазами висят, и рассеивают его внимание. Вглядываясь в 20 методов класса, вернувшись к нему через год, приходится вспоминать для чего эти методы, всем ли методам класса они нужны, или только одному из них.

В интерфейсе класса есть только публичные функции. Не позорься.


ProBiotekВ принципе можно скрыть вспомогательные методы, которые используют только 1 метод с помощью #region. Но тут появляется некоторый риск, что они случайно "уплывут" от метода, который их использует, если кто-то (да хотя бы и сама среда, когда вы просите ее заимплементить методы интерфейса) добавит свою функцию между.
Вложенные методы просто физически не смогут "уплыть" от использующего их метода. Они в нем. Компилятор без проблем может их вынести в статик методы на этапе компиляции, когда они уже не будут мозолить глаза программисту.. Синтаксический сахар однака :)

При чём тут компилятор. Вложенные функции это что вообще? К чему они относятся? Раздутый код функции с вложенными функциями -- это что? Я скажу что это -- это плохо пахнущий, грязный, плохо поддерживаемый код, не дающий никаких преимуществ. Я чётко знаю, что в функции у меня код, если требуется декомпозиция, код выносится в приватную функцию. Приватные функции не засоряют интерфейс класса, потому что это ИНКАПСУЛЯЦИЯ — слыхал о таком? Ну почитай пару книжек по ООП, Фаулера почитай, по ссылкам которые ты мне скидывал, текст почитай.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844122
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekОк. Может все это и перевешивает плюсы от вложенности методов :)

Дело в том, что вложенные функции изначально не нужны. Тестирование, контракты, аспекты, это да... Но и в целом во вложенных функциях видится только вред, а не польза. Никакой пользы.

Зато скажу в противовес, вот JavaScript вложенные функции -- это гуд, потому что парадигма совсем другая, подходы к разработке совсем другие, язык другой. И надо уметь извлекать пользу от подходов, принятых в каждом отдельном языке программирования.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844124
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotekВчера я решил создать эту темку, чтобы узнать нету ли какого-то аналога. Только и всего.

Просто постарайся понять, что Func<> и Action<> не имеет никакого отношения к вложенным функциям, это не аналог, и даже нельзя рассматривать их в таком качестве. Это делегаты. Хочешь, можешь определить именованные делегаты с параметрами, и будет тебе интелесенс.
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844134
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ProBiotek,
авторОк. Может все это и перевешивает плюсы от вложенности методов :)
да бросьте Вы всю эту маниловщину , повзрослейте, тут куча полиглотов пишущих на разных языках и не испытывающих лексическую нужду, у каждого языка есть спецификация исходите из этого
http://blogs.msdn.com/b/ruericlippert/
...
Рейтинг: 0 / 0
IntelliSense для Func<> Action<> ?
    #38844138
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

ок ок :))
Приватные методы я назвал интерфейсом потому-что, а как их еще назвать, с точки зрения программиста, поддерживающего код. Он видит эту кучу методов и должен ими оперировать и понимать что для чего. Это суть описания интерфейса класса :)

Ну хотел придумать способ повысить читабельность класса.
...
Рейтинг: 0 / 0
25 сообщений из 77, страница 3 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / IntelliSense для Func<> Action<> ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]