Re[10]: Новости C#12
От: hi_octane Беларусь  
Дата: 15.04.23 15:54
Оценка: 159 (4) +6 :)
Я уже это всё проходил 10+ лет назад в "священных войнах", поэтому воевать буду в полсилы, без огонька

R>Это не макросы, это языковые сущности,

То что это некие "сущности" лишь следствие негибкости языка и мышления авторов. В языке с макросами никакие "сущности" изобретать не нужно.

R>которые понимает каждая кухарка, взявшаяся читать код — ибо они часть языка.

Вот в реальном проекте у меня когда-то использовались макросы readlock(obj) и writelock(obj)
Автор: hi_octane
Дата: 01.11.10
. Использовались foreach {} else { то что выполняется если IEnumerable пустой }. Использовались переменные которые объявлялись как interlocked int, и дальше все операции +/-/++/-- выполнялись через Interlocked.*. Использовали макрос который внутри функций позволяет объявляеть приватные члены
Автор: hi_octane
Дата: 18.03.11
, которые больше внутри класса никому не видны, и не замусоривают пространство имён — это позволяет, например, не мусорить с disposing/disposed внутри класса при реализации IDisposable, и скрывать всякие одноразовые wasInitialized, кэши, и DateTime _lastRetryTime. Вот любую из этих фич никому в команде особо объяснять не надо было. Один раз увидели и пользовались. Так что про непонятность мимо. Люди с прямыми руками используют все возможности языка чтобы было удобнее и понятнее. Люди с кривыми руками самый просто вложенные if-ы так завернут, что чёрт ногу сломит.

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

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

Понимание может быть только у человека который пользовался и тем и другим. Я вот пользовался, результат отличный, достоинств вижу в разы больше чем недостатков. Собственно Roslyn и Source Generators это такой вялый дрейф в сторону тех самых макросов. Ещё лет 10 подрейфуют и приплывут.

R>Людям этот код читать потом, но райтонли пейсателям на это пофиг. Не, можно, конечно, ввести ограничения в проект на использование некоторых фичей языка... Ой, чего-то плюсами напахнуло.

И снова ограничения по фичам в случае макросов вводить куда удобнее — ты можешь просто не включать их в свой проект. Они обычные библиотеки, просто с фичами а не классами. Если лид или команда решили в каком-то проекте использовать какой-то макрос — значит он удобен, понятен, и облегчает работу. А если решили ничего не использовать — то code review закончится на этапе изучения "что ты за новые либы в проект притащил, нам не надо". И в исходники смотреть не придётся.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.