Как стать автором
Обновить
29
Карма
0
Рейтинг

Пользователь

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Это грамотная композиция, а не смешение. Мы берём фичи A и B, комбинируем и получаем C=AB, а не С=XB, где X это как A, но уже не совсем в данном контексте.

Как по вашему должен работать такой псевдокод
match shape with
| Square(2, 2) -> 1
| Circle(4, 5) -> 0
| var(0, 0) -> 3 // Shape(0, 0) -> 3

где базовый Shape (выведенный тип для var) поддерживает деконструкцию?

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Аргументировать я предлагаю кодом, потому что это наиболее строгий подход — это как вывод формул в математике.

Если я пишу
Person GetPerson() => ...

GetPerson().Is(out Person p)

и далее естественным образом заменяю на
GetPerson().Is(out var p)

с полным сохранением логики работы, то закономерно ожидаю аналогично симетрии для случаев
GetPerson() is Person p
GetPerson() is var p

Увы, эта симетрия нарушена… Почему? Может, вы мне поясните примерами кода, где это крайне необходимо?

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Я и говорю: мнение других вас не волнует.
Меня волнуют аргументированные мнения.

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Матчить сложные паттерны можно уже сейчас (примеры см. тут).

Самое сомнительное решение дизайнеров языка — это неочевидное смешение матчинга по типу и по значению (например, в F# они разделены). Разбор имплементации здесь.

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Хаскель?
C#
(с заменой is var, case var на кастомные расширения)

То, что другим ваш код чистым не кажется, вас не волнует.
Неплохой у меня код, уж я-то знаю. ;)

Правостороннее присваивание и другие необычные приёмы программирования в C#

Надеюсь, что вам собственное понимание нравится.

Вряд ли вы встречали прежде реализации многих рассмотренных решений. Можете, конечно, считать их полной чепухой, но они вполне рабочие и применимые на практике, не взирая на критерий «кроме вас».

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

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

Отдельный вопрос — люди-авторитеты (например, из LDM). Мне было очень интересно, способны ли они открыто признавать своё неудачное решение или наоборот привести убедительные аргументы в его пользу. К сожалению, веского объяснения, почему сделано именно так, никто не привёл.

Интересно, что по последней информации LDM недавно реализовало в прототипе вместо p is { Name is «Abc» } другую форму p: { Name: «Abc» } для сохранения смысла операторов is (==, =), так что мои препирательства, возможно, оказали какое-то влияние.

Вот только убедительными аргументами вы считаете исключительно то, что вам удобно.
Как вам объяснить… Есть симметрия и математическая красота — это основные ориентиры для меня. Если вижу их очевидое нарушение, то прямо об этом говорю, здесь нет речи об удобстве или неудобстве аргументов для меня. В конце концов нашлись действительно строгие альтернативные решения, так что со спокойной душой я могу писать чистый код по своему разумению.

Правостороннее присваивание и другие необычные приёмы программирования в C#

Я ни разу не слышал, чтобы кто-то (кроме вас) называл GetString или TryParse паттерном.
Всё бывает впервые. Теперь вы услышали.

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

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Там не было аргументированной критики. Вы просто повторяли одну шарманку «так писать плохо» и полностью игнорировали то, что вам пишут ответ.
Вероятно, вы не совсем внимательно читали мои комментарии и вникали в суть сказанного.

на личные скрытые почты LDM
Немногочисленные письма были отправлены лишь на личные открытые почты.

Вы не дискутируете. Вы выставляете ультиматум «СДЕЛАЙТЕ ВОТ ТАК», и не приемлете никакого иного решения...
С чего вы вообще взяли, что я ставлю ультиматумы и говорю, кому что делать? Меня по большей части интересуют поиски математической красоты в программировании, а не доказывание своей правоты. При наличии убедительных аргументов я легко признаю свои ошибки, что не раз случалось в дискуссиях, но пока таких аргументов нет — отстаиваю свою точку зрения, и только.

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

И меня не было цели убедить вас или кого бы то ни было ещё.

Человек, ознакомившись с материалами, сам поймёт, нужно ему это или не нужно. :)

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Ну, вот и другим хочется.

Да? Но заинтересованные люди нашлись.

Правостороннее присваивание и другие необычные приёмы программирования в C#

Мне неинтересно заниматься цеплянием к словам, поэтому я предпочитаю пользоваться вероятностными определениями и описанием мира.

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

Что касается паттернов в программировании, то их можно разделить по уровням абстракции. Сначала идут базовые паттерны самих языков программирования — это основные языковые конструкции, например, типы, циклы, условные выражения… Ведь что-то же отличает язык прораммирования от естественного человечкого языка, не так ли? Далее чуть более общее паттерны ToString, GetType, TryParse… Потом ещё более абстактные билдер, синглтон, фабрика… И в завершение, архитектурные — MVC, MVP, MVVM…

Вы, конечно, можете спорить со мной, переубеждать, но мне прекрасно живётся и с таким опредлением. Если оно вам не нравится, то продолжайте пользоваться своим, я даже не говорю, что оно в чём-то неправильное. Просто оно ваше — и это нормально разным людям иметь отличающиеся взгляды на какую-то тему.

Правостороннее присваивание и другие необычные приёмы программирования в C#

Паттерн (информатика) — эффективный способ решения характерных задач проектирования, в частности проектирования компьютерных программ.
Эффективный способ решения характерной задачи с парсингом сторок в C# — это, например, использование конструкции int.TryParse(str, out var i). Но вы, конечно, можете реализовать и свой паттерн. :)

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Собственно, в этом и проблема.
Ну, вы так и не предоставили убедительных для меня аргументов, обнаруживающих существенные недостатки, из-за которых мне стоило бы отказаться от своих кастомных решений.

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Но отчего же вы до сих пор отвечаете на мой «спам» и выражаете своё мнение на его счёт? Может быть, это изощерённый спам особого рода, который заслуживает некоторого внимания?.. А я коварный и тёмный программист, который сеет очень плохие идеи в неокрепших умах юных разработчиков и соблазняяет более опытных переметнуться на его тёмную сторону? )))

Всё проще. Нет у меня подобных манихейских замашек, я всего лишь делюсь личным опытом.

Правостороннее присваивание и другие необычные приёмы программирования в C#

Хотите понятную аналогию?

Есть текстура, и если человек видит на ней узор (более-менее регулярную закономерность), то он вполне может сказать: «Я вижу геометрический паттерн такой-то», — и его поймут.

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

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

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Я же говорю: это вы так считаете.
Считаю.

На спам тоже никто не обязан отвечать.
Удивительно много людей отвечало на мой «спам».

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Ну а в-третьих, поскольку благодаря вашему поведению мы уже не увидим этих комментариев, никакого способа подтвердить ваши слова у вас нет.

Это трагедия — никто не поверит мне… ))

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

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

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

Исправлять ли unexpected behavior в C# 7 или оставить как есть, усложнив синтаксис языка для компенсации?

Ну, под определения спама или оффтопа мои комментарии уж точно не попадают: они тесно связаны с темой обсуждения, нейтральны, содержат лишь технические детали. Более того, на них никто не обязан отвечать…

Информация

В рейтинге
5,777-й
Зарегистрирован
Активность