По поводу using-ов...
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.07.14 16:11
Оценка: 25 (5)
Как-то где-то читал пространные философские рассуждения какого то "умного" гуру о том, что using-и в C# (те что открывают пространства имен) нужно держать в "чистом теле", т.е. заботиться о них, вычищать ненужные, сортировать по алфавиту, и т.п.

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

Но на практике это все булшит. Реальный C#-программист пользуется Решарпером который автоматом вставляет/удаляет/сортирует using-и, а на их состав не смотрит вообще, за исключением случаев когда встречаются конфликты имен.

Лично я вообще сворачиваю using-и с помощью фолдинга (колапсед-регион в Студии), а просмотр кода в файле начинаю с описания класса (который, обычно, один на файл).

В Васике даже есть возможность засунуть стандартные пространства имен в специальный файл и не дублировать их в каждом файле проекта.

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

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

В языке с сильным выводом типов многие неоднозначности могут вообще разрешаться в автомате, подсистемой вывода типов. Если оная не справляется, она выдает программисту сообщение об ошибке в котором говорится о том, что два или более символа конфликтуют между собой. Далее программист может сделать одно из двух:
1. Закрыть пространство имен (или тип) содержащий ненужные символы.
2. Определить какой из типов имеется в виду указав полностью или частично квалифицированное имя.
3. Введя псевдоним с указанием на какой из символов будет разрешаться имя.

По моему такой подход может серьезно упростить жизнь программисту.

Еще одной идеей видится пренос юсингов из отдельных файлов с кодов в описание проекта. Вместо того чтобы по 100500 раз описывать using-и в каждом файле имеет смысл указать какие из пространств имен импортируются из библиотеки. Такой подход за одно позволил бы лучше контролировать использование типов из внешних сборок.

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