|
Труд вопреки насмешкам
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
C#.NStar22.11.2020, 01:26. Показов 40251. Ответов 523
Метки нет (Все метки)
С чего всё началось
Мой язык программирования развивается, в очередной раз меняя название. Пятое название после C↑ᶜC, C#++, C with stations и временного Unnamed2 имеет вид "C# .NStar". Это название не вызывает никаких ассоциаций со стрелками, с "симбиозом плюсов и шарпа", со "станционным программированием", а вызывает единственную - то, что этот язык - прямое продолжение C#. Теперь вы убедились, что этот язык - не пустая болтовня, одна версия уже увидела свет, поэтому надеюсь, что очередная презентация возможностей C# .NStar хоть и подвергнется критике, но не приведет ни к чему плохому. Вот что уже работает:
1. Пространства имен. 2. Ошибки списком строк - теперь отображение n ошибок не займет время, пропорциональное n2, и вообще я по максимуму убрал конкатенацию строк в цикле, что является экстремально важным признаком качества языка. 3. Списки - не только возврат списка, но и переменные списочных типов. 4. Индексы - последний и самый сложный из перечисленных пунктов. Такой код успешно работает:
А вот несколько будущих возможностей: 1. Оператор switch с лямбда-выражением. Это невероятно мощная конструкция! Позволит убрать очень много дублирования в условиях. Вот два примера:
2. Способ задания словаря будет отличаться от способа задания двумерного списка: ключ и значение будут разделяться оператором " :", а если словарь состоит из единственного элемента, доступного по всем ключам - достаточно указать один этот элемент. Пример:
ПОБЕДА!!! C#.NStar достиг версии (Alpha RC) 0.9! Это первое приложение от Red-Star-Soft, когда-либо достигавшее подобной версии! (Фреймворк - это не приложение.) Теперь, надеюсь, я перестал быть "профессиональным недоделывателем"? И, надеюсь, я получу тест? 1. Работа с файлами. 2. При техническом крахе сохраняется лог во временную папку. 3. Потоки. Причем нет этого ужасного разбиения на две воюющих стороны - синхронные и асинхронные - переключение контекста происходит автоматически. 4. "Швейцарский нож" (оператор is, сопоставление шаблонов). Пока что реализованы семь шаблонов: константа, тип, тип с объявлением переменной, var с объявлением переменной, шаблон сравнения (больше/меньше), пустой шаблон (_) и составной шаблон - несколько шаблонов, объединенных операторами and, or, not. Есть одна замеченная, но не исправленная ошибка, что попытка применить шаблон сравнения не к числу вызывает технический крах. Возможно, в будущем исправлю. 5. Сокращенный оператор for - можно написать так:
7. Записи (Record - с прописной буквы). В отличие от C#.NET, это по терминологии Мартина чистые структуры данных, имеющие свойства, совпадащие по именам и типам с параметрами, конструктор из эих параметров и стандартные методы Equals и GetHashCode и неспособные иметь другие методы и свойства. 8. Структуры (Struct - с прописной буквы). 9. Прототип полиморфизма в виде словарей от рекурсивного типа к классу, одним из следующих способов (ключевое слово Class в случае полиморфизма обязтельно брать в скобки):
10. Обработка исключений:
11. И самое невероятное - ПАКЕТНЫЙ МЕНЕДЖЕР!!! Вы можете подключить любой пакет, доступный в публичном репозитории NuGet - достаточно зайти в настройки и указать его имя. Рабочие примеры кода на C#.NStar, в дополнение к предыдущим версиям:
1
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 22.11.2020, 01:26 | |
|
Ответы с готовыми решениями:
523
Мелкомягкие мыслят местами точно как и я или следят за моим компьютером и крадут идеи, записанные на нем для C# .NStar? Стал ли .NStar в меньшей степени "сборной солянкой"? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
| 21.11.2025, 11:55 | |
|
Под программой вы понимаете минимодуль? Но это решается иными средствами а не количеством классов в модуле. Какая то каша. я так понимаю вы это так интерпретируете то что называется «слабое связывание» (Low Coupling) и «высокое сопряжение» (High Cohesion) и не только.... точнее даже напоминает результат каши от своей интерпретации хороших практик программирования.
Навертеть фигни то можно и на 8 классах .....
0
|
|
|
Труд вопреки насмешкам
|
||||
| 21.11.2025, 11:59 [ТС] | ||||
|
0
|
||||
| 21.11.2025, 12:08 | |||
|
А так, разумной расстановкой модификаторов доступа, разделение на модули/библиотеки с созданием интерфейсов для взаимодействия. Тут речь идет ведь об архиетктуре. Что приходит в голову (для того чтобы немного разделить ваше понятие "спаггети-связи" 1 Слабая связанность (Low Coupling) 2 Высокое зацепление (High Cohesion) 3 Инверсия зависимостей (Dependency Inversion) 4 Внедрение зависимостей (Dependency Injection) Использование некоторых паттернов И признаком нарушения всего этого является не количество классов. Надо анализировать архитектуру и связи. в 8 классах (и даже в меньшем количестве) можно все четыре пункта нарушить создав неадекватный клубок кода.
0
|
|||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|
| 21.11.2025, 12:11 | |
|
1
|
|
| 21.11.2025, 12:13 | ||||||
|
Вот я попросил ИИ накидать пример (я на шарпе не писал, потому делегировал
Всего 3 класса. Вы этот код считаете хорошим и не спаггети?
0
|
||||||
|
Труд вопреки насмешкам
|
||||||
| 21.11.2025, 12:27 [ТС] | ||||||
|
Добавлено через 1 минуту
0
|
||||||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|
| 21.11.2025, 12:28 | |
|
0
|
|
| 21.11.2025, 12:34 | ||||||
|
Что вы тогда называете спаггети - можете описать в чем оно проявляется?
Например: Разве хорошо что класс User жестко зависит от классов Order, DatabaseManger, MailSerivce? Добавлено через 2 минуты Особенно если в MailService куда то еще докинуть (скажем бизнеслогика какая то потребуется связанная с пользователем)
В любом случае - количество классов не показатель. Как раз таки модуль содержащий 16 классов может оказаться более "чистым" чем тот же модуль с тем же функционалом из 5 классов
0
|
||||||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
||
| 21.11.2025, 12:34 | ||
|
1
|
||
|
Труд вопреки насмешкам
|
||
| 21.11.2025, 12:36 [ТС] | ||
|
0
|
||
| 21.11.2025, 12:38 | |||
|
Добавлено через 50 секунд
0
|
|||
|
Труд вопреки насмешкам
|
||
| 21.11.2025, 12:39 [ТС] | ||
|
0
|
||
|
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
|
|||
| 21.11.2025, 12:42 | |||
|
Добавлено через 1 минуту
0
|
|||
| 21.11.2025, 12:44 | |||
При этом даже если принять за то что количство это годный ориентир - это ОЧЕНЬ сильно зависит от проекта. В шарпе же есть интерфейсы - точно так же можно избавляться от жестких связей Добавлено через 2 минуты В любом случае я прикинул все свои проекты и не смог вывести ни для одного "число классов, которое сигнализирует о плохом коде"
0
|
|||
|
Труд вопреки насмешкам
|
|||
| 21.11.2025, 12:45 [ТС] | |||
|
0
|
|||
| 21.11.2025, 12:49 | |||
|
Т.е. "количества" плохой признак. Количество строк в методе, количество методов в классе, количество символов в строке, еще как том может сигнализировать о чем то плохом.... а классы, сборки.... брр.
0
|
|||
|
Труд вопреки насмешкам
|
||
| 21.11.2025, 12:51 [ТС] | ||
|
0
|
||
|
Труд вопреки насмешкам
|
|||||
| 21.11.2025, 13:14 [ТС] | |||||
|
Добавлено через 1 минуту Добавлено через 3 минуты Добавлено через 10 минут На самом деле, и количество функций в классе не всегда информативно. Например, BaseList. Наверное, за сотню функций. Не статический. Тут только подавлять на уровне отдельного класса.
0
|
|||||
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|