Re[9]: partial methods
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 31.10.24 08:33
Оценка: :))
Здравствуйте, Codealot, Вы писали:

S>> Нет. Но там куча методов генерится.


C>То есть, без partial methods прекрасно можно обойтись?

Не прекрасно. Нужно вводить абстрактность. А это проблемы с инлайнингом.
и солнце б утром не вставало, когда бы не было меня
Re[5]: partial methods
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 31.10.24 08:36
Оценка:
Здравствуйте, Codealot, Вы писали:


S>> Ну единственное решение это абстрактный класс.


C>Думаю, можно и другие найти. Опять же, чем плох абстрактный класс?


Тем что виртуальные методы плохи для инлайнинга и избавления от виртуальности VMT
S>> По сути это аналог шаблонов С++, но с интеллисенсе и статической типизацией.

C>И с очень ограниченной областью применения.

Поясни в чем ограниченность? Написать свой Source Generator не можешь?
Распространяй компоненты в исходниках.

Опять же если тебе не нужны partial methods используй абстрактные в чем проблема. Больше инструментов это хорошо!

Ну и вообще надо смотреть на эволюцию SG. Сейчас практически partial methods не нужны если они уже прописаны в SG и парсер их видит.
Но бывает, что SG не хватает данных и нужны методы заглушки для интеллисенса и статической типизации.
Но опять методы можно формировать, даже если и нет данных. Обычные заглушки.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 31.10.2024 10:52 Serginio1 . Предыдущая версия . Еще …
Отредактировано 31.10.2024 8:45 Serginio1 . Предыдущая версия .
Re[10]: partial methods
От: Codealot Земля  
Дата: 31.10.24 14:50
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Не прекрасно. Нужно вводить абстрактность. А это проблемы с инлайнингом.


Экономия на спичках.
Ад пуст, все бесы здесь.
Re[6]: partial methods
От: Codealot Земля  
Дата: 31.10.24 14:50
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Тем что виртуальные методы плохи для инлайнинга и избавления от виртуальности VMT


Экономия на спичках. В случае тех же винформ, у них уже наворочено столько уровней абстракции, что эффект от "экономии" в инициализаторе не разглядеть даже в микроскоп.

S> Поясни в чем ограниченность?


В том, что кроме генераторов, других применений у этих методов нет. В отличии от шаблонов.

S> Больше инструментов это хорошо!


Если задачу можно было решить универсальными средствами, а вместо них сделали средства для одной узко заданной задачи — это совсем не хорошо.
Ад пуст, все бесы здесь.
Re[7]: partial methods
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 31.10.24 15:09
Оценка:
Здравствуйте, Codealot, Вы писали:

S>> Тем что виртуальные методы плохи для инлайнинга и избавления от виртуальности VMT


C>Экономия на спичках. В случае тех же винформ, у них уже наворочено столько уровней абстракции, что эффект от "экономии" в инициализаторе не разглядеть даже в микроскоп.

Там все упирается в Paint, по сравнению с ним лишняя косвенность копейки.
S>> Поясни в чем ограниченность?

C>В том, что кроме генераторов, других применений у этих методов нет. В отличии от шаблонов.

Шаблон это и есть генератор текста. Как раз С++ щеголяли ими по сравнению с дженериками.
Просто по шаблону текст генерится во время компиляции, а для SG во время проектирования и можешь посмотреть реальный код!
S>> Больше инструментов это хорошо!

C>Если задачу можно было решить универсальными средствами, а вместо них сделали средства для одной узко заданной задачи — это совсем не хорошо.

Я с тебя хренею. Вот те кто занимается SG это хорошо. А тем кто не занимается тем похрену.
И это задача совсем не узкая! Расширяются инструменты.
и солнце б утром не вставало, когда бы не было меня
Re[8]: partial methods
От: Codealot Земля  
Дата: 31.10.24 15:17
Оценка: :)
Здравствуйте, Serginio1, Вы писали:

S>Там все упирается в Paint, по сравнению с ним лишняя косвенность копейки.


Можно и так сказать. В любом случае, так сильно волноваться из-за абстрактных методов в кодогенераторе — экономия на спичках.

S>Шаблон это и есть генератор текста. Как раз С++ щеголяли ими по сравнению с дженериками.


Вовсе нет, в C++ все намного сложнее.

S> Я с тебя хренею. Вот те кто занимается SG это хорошо. А тем кто не занимается тем похрену.

S>И это задача совсем не узкая! Расширяются инструменты.

Просто ты никак не поймешь. Я не спрашиваю "как эту фичу можно приспособить". Я спрашиваю "почему именно так, а не иначе".
Ад пуст, все бесы здесь.
Отредактировано 31.10.2024 15:19 Codealot . Предыдущая версия .
Re[9]: partial methods
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.11.24 07:23
Оценка:
Здравствуйте, Codealot, Вы писали:

C>Просто ты никак не поймешь. Я не спрашиваю "как эту фичу можно приспособить". Я спрашиваю "почему именно так, а не иначе".

Ну вот ту разрабатываешь свой класс. Тебе нужно применить к нему какую то рутину используя кучу генераторов
https://github.com/amis92/csharp-source-generators

Для римера PropertyChanged.SourceGenerator
А там нужен какой то метод помеченный для генерации. И тебе надо сначала создать абстрактный класс, на основании которого сгенерируется новый класс.
Еще раз в самом начале SG не так хорошо генерировал и подхватывались сгенеренные файлы.
Поэтому partial methods нужны прежде всего, что бы не ждать генерацию.
Немерлисты критикуют SG что макросы лучше
https://rsdn.org/article/nemerle/NemerleStingFormating.xml
Автор(ы): Владислав Чистяков
Дата: 09.12.2006
В статье на базе практических примеров разбирается что такое макросы Nemerle, что они могут и как их создавать.
и солнце б утром не вставало, когда бы не было меня
Отредактировано 01.11.2024 7:40 Serginio1 . Предыдущая версия .
Re[10]: partial methods
От: Codealot Земля  
Дата: 01.11.24 15:57
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Еще раз в самом начале SG не так хорошо генерировал и подхватывались сгенеренные файлы.

S>Поэтому partial methods нужны прежде всего, что бы не ждать генерацию.

Что мешает создать абстрактный метод и реализовать его в сгенеренном коде?
Ад пуст, все бесы здесь.
Re[11]: partial methods
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.11.24 16:04
Оценка:
Здравствуйте, Codealot, Вы писали:

S>>Еще раз в самом начале SG не так хорошо генерировал и подхватывались сгенеренные файлы.

S>>Поэтому partial methods нужны прежде всего, что бы не ждать генерацию.

C>Что мешает создать абстрактный метод и реализовать его в сгенеренном коде?

Зачем городить лишний класс? Тебе бы все усложнить. НЕ ХОЧУ! Мне как раз partial methods нравятся.
Но опять же сейчас надобность в них не актуальна. SG значительно оптимизировали.
Вот так как нельзя SG модифицировать существующий код override нужен. Но проще использовать существующие методы с генерацией новых.
и солнце б утром не вставало, когда бы не было меня
Re[12]: partial methods
От: Codealot Земля  
Дата: 01.11.24 16:22
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Зачем городить лишний класс? Тебе бы все усложнить. НЕ ХОЧУ! Мне как раз partial methods нравятся.


Это у тебя уже религиозное. Классы практически ничего не стоят, пытаться их экономить — странная идея. А новая фича в языке — это как раз очень дорого.
Ад пуст, все бесы здесь.
Отредактировано 01.11.2024 16:24 Codealot . Предыдущая версия .
Re[13]: partial methods
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 01.11.24 17:40
Оценка:
Здравствуйте, Codealot, Вы писали:


S>>Зачем городить лишний класс? Тебе бы все усложнить. НЕ ХОЧУ! Мне как раз partial methods нравятся.


C>Это у тебя уже религиозное. Классы практически ничего не стоят, пытаться их экономить — странная идея. А новая фича в языке — это как раз очень дорого.

Это у тебя религиозное. На самом деле partial methods это уже анахронизмы. Проще уж интерфейс использовать, а не абстрактные классы.
Как я тебе показывал примеры, прямо в описании метода ты можешь использовать сгенеренные свойства, методы итд.
Не нужно никаких partial. Просто уже SG должен существовать.
Ничего дорого нет. А вот лишние действия с двумя классами точно.
Изначально был partial method только void, без ref параметров. Нужен был для T4.
и солнце б утром не вставало, когда бы не было меня
Re[14]: partial methods
От: Codealot Земля  
Дата: 01.11.24 18:09
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Проще уж интерфейс использовать, а не абстрактные классы.


Однофигственно.

S> Не нужно никаких partial.


Верно.
Ад пуст, все бесы здесь.
Re[5]: partial methods
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.11.24 13:57
Оценка: +3
Здравствуйте, Codealot, Вы писали:

RD>>Ну а зачем заводить лишний уровень абстракции, если можно без него обойтись?


C>Пц. А это ничего, что ради этого бзика пришлось заводить целую новую фичу языка, которая вероятно будет нужна 0.0001% рарзработчиков?


Эта фича появилась в те времена, когда почти 100% UI делалось мышом, итд. Почти каждая ваканся была про WinForms, WPF

Вообще, фича крайне удобна для любой кодогенерации
Отредактировано 15.11.2024 13:59 Pauel . Предыдущая версия .
Re[15]: partial methods
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 15.11.24 14:54
Оценка:
Здравствуйте, Codealot, Вы писали:


S>>Проще уж интерфейс использовать, а не абстрактные классы.


C>Однофигственно.


S>> Не нужно никаких partial.


C>Верно.


Не совсем. Иногда сложно читать код в разных файлах. Так для удобства чтения небольшого класса видеть все определения partial очень удобны.
и солнце б утром не вставало, когда бы не было меня
Re[6]: partial methods
От: Codealot Земля  
Дата: 15.11.24 15:24
Оценка:
Здравствуйте, Pauel, Вы писали:

P>Вообще, фича крайне удобна для любой кодогенерации


Точно так же можно было использовать virtual.
Ад пуст, все бесы здесь.
Re[16]: partial methods
От: Codealot Земля  
Дата: 15.11.24 15:24
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Не совсем. Иногда сложно читать код в разных файлах. Так для удобства чтения небольшого класса видеть все определения partial очень удобны.


Они у тебя и так будут в разных файлах.
Ад пуст, все бесы здесь.
Re[7]: partial methods
От: Pauel Беларусь http://blogs.rsdn.org/ikemefula
Дата: 15.11.24 15:53
Оценка:
Здравствуйте, Codealot, Вы писали:

P>>Вообще, фича крайне удобна для любой кодогенерации


C>Точно так же можно было использовать virtual.


Неудобно — это плохо работает с несколькими файлами, больше 2х — сиди и думай, что от чего наследуется, сущности плодятся и всегда нужна реализация, хоть какая нибудь.
Re[17]: partial methods
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 15.11.24 16:00
Оценка:
Здравствуйте, Codealot, Вы писали:

S>> Не совсем. Иногда сложно читать код в разных файлах. Так для удобства чтения небольшого класса видеть все определения partial очень удобны.


C>Они у тебя и так будут в разных файлах.

Реализация будет в разных файлах, а объявление partial в основном.
и солнце б утром не вставало, когда бы не было меня
Re[8]: partial methods
От: Codealot Земля  
Дата: 15.11.24 16:40
Оценка:
Здравствуйте, Pauel, Вы писали:

P>больше 2х — сиди и думай, что от чего наследуется, сущности плодятся


Вот уж проблема.
Ад пуст, все бесы здесь.
Re[18]: partial methods
От: Codealot Земля  
Дата: 15.11.24 16:40
Оценка:
Здравствуйте, Serginio1, Вы писали:

S> Реализация будет в разных файлах, а объявление partial в основном.


И что тебе мешает сделать так же с базовым классом?
Ад пуст, все бесы здесь.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.