Re[6]: using - накой вас придумали??
От: Kolesiki  
Дата: 30.11.15 23:46
Оценка: :)
Здравствуйте, Sinix, Вы писали:

S>1. У вас студия запрещена что ли Ваш boilerplate уже лет 8 подставляется автоматом


Мне пофиг, кто и как вставляет юзинги — тут вопрос принципа минималистичности. Если у компилятора достаточно информации для работы, я не должен ему ещё тыкать "возьми там, положи здесь". С таким успехом можно и на ассемблере фигачить — а вдруг C# компилятор неправильно поймёт "add"?
И юзинги не только мешаются в шапке, об них постоянно спотыкаешься в коде — вместо набора fi->выбрал "File" я руками набираю весь класс, после чего студия любезно предлагает добавить нэймспэйс — оно мне надо?

S>2. Это классика проектирования сложных систем: любое новое поведение должно добавляться как opt-in, а не как opt-out.

S>Другими словами, хочешь что-то заиспользовать — будь любезен объявить это явно.

Фигня, всего лишь костные привычки от языков старого формата. Да и "неявного" тут ничего нет — все неизвестные/неоднозначные классы всплывут походу.

S>И да, раскидыванием по библиотекам эта проблема не решается, классика:

S>
S>// Assembly A, references ANode
S>Node Parse(...) { ... }

S>// Assembly B, references BNode
S>Node Parse(...) { ... }

S>// Assembly B, some helper
S>string SomeHelper(...) { ... }
S>

S>В проекте везде используются типы из A, используем хелпер из B. Автореференсы засирают лог сборки несколькими тысячами однотипных ошибок, приятной отладки

Для начала стоит сказать, что и с юзингами отладка одинаковых имён — тот ещё гемор, тут бестолковость _разработчика_, которая к языку не имеет никакого отношения.
Далее, "классика"? Тю, обычный пример из пальца. Разбираем: есть проект C, который юзает две ассембли A и Б, причём в каждой есть класс Узел. Как только мы касаемся Узел в исходнике C/util.cs, сразу попадаем на неоднозначность:
var n = new Node();

...которую тут же легко подправляем:
alias Node = AssemblyB.Node;

var n = new Node();
SomeHelper(n);


Причём alias нужен исключительно для упомянутых в коде классов. Более того — нужный класс Узел может даже быть ВЫВЕДЕН из использования в SomeHelper(n)!
Откровенно, я ещё не видел такого УЖАСНОГО проекта, где два исходника содержат два "разных" Узла и весь этот кошмар юзается в третьем проекте! Ваш высосанный пример только лишний раз доказывает, что проблема сидит в прокладке меж монитором и клавой, нежели в каких-то именах.
Нэймспэйсы нужны — они делают свою работу за кадром, но опускаться до уровня "возьми вот эту либу" — это перекладывать лень разработчиков компилятора на тысячи плеч программистов.

Возможно, проблема не была бы столь надоедливой, если бы филоны из VS team почаще отрывали задницы от кофейных сидений — в студии ДОФИГА всего надо улучшать, а они там иконки перекрашивают! Хотя б собирали для начала имена всех полезных классов, чтоб я не парился с вводом. Но полезность юзингов всё равно остаётся для меня сомнительной.

K>>Про конфликт имён — очевидно и первоклашке, using нужен, но лучше как ключевое слово alias.


S>3. Юзинги в проекте порождают ещё более забавную проблему с включением в проект чужих исходников. Блин, да даже стандартный сценарий "перетаскиваем файл из проекта в проект" после такого пожелания превращается в минное поле.


Ничуть. Проект — это тебе не свалка, в нём не должно быть ИСХОДНИКОВ, которые ты не касаешься. Кажется, я догадываюсь, откуда берутся проекты, компилящиеся по 30 минут — вот-вот, те самые "кучи г-сходников", которые включают наобум.
Нужна либа? Скомпилял дебаг-версию, подключил, забыл. И конфликтов имён никаких.
Re[7]: using - накой вас придумали??
От: namespace  
Дата: 01.12.15 20:59
Оценка:
K>Откровенно, я ещё не видел такого УЖАСНОГО проекта, где два исходника содержат два "разных" Узла и весь этот кошмар юзается в третьем проекте!
Третий проект может содержать ссылки на сторонние либы первых двух.
И у прокладки возникнет куча головной боли по вписыванию алиасов после добавления второй либы.

Если у Пети проект ссылается на либу Васи, а тот решил добавить ссылку на либу Сергея, то у Пети развалится проект, хотя, ему ни на кой черт не нужен Node из либы Сергея в своем проекте.
Зато ему нужен Node из либы Васи, который почему-то завется VasyaLibNode, а просто потому, что Вася не захотел потом писать везде алиасы. И, не зная что там еще придумает Сергей, Вася все классы так именовать начнет. Тенденция очевидна.

Вы имена переменных в 1С видели?

Да, я понял Вашу идею, и она мне абсолютно не нравится.
Re[8]: using - накой вас придумали??
От: Kolesiki  
Дата: 01.12.15 21:53
Оценка:
Здравствуйте, namespace, Вы писали:

N>Да, я понял Вашу идею, и она мне абсолютно не нравится.


Потому что люди — всегда люди, будут до усрачки защищать свои "первичные знания". Это трудно, я понимаю. И всегда хочется выглядеть умным. Даже умнее, чем можешь себе позволить. И искать пятна на солнце. Ради бога, я никого переубеждать не буду — я уже объяснил с самого начала: я видел ПЯТЬ ПРОЕКТОВ, пять, Карл! В которых в паре исподников нужно было сослаться на неоднозначный класс. Хотите — до конца жизни импортируйте свои классы, я такой обезьяний труд не приемлю. Практика — лучший критерий.
Re[8]: using - накой вас придумали??
От: Sinix  
Дата: 02.12.15 06:26
Оценка:
Здравствуйте, namespace, Вы писали:

N>Да, я понял Вашу идею, и она мне абсолютно не нравится.

Не спорьте. Посмотрите остальные посты топикстартера, он с непонятным упорством пытается троллить на темы, в которых явно и очевидно не разбирается.
Ладно бы в КСВ, но в профильных ветках так подставляться — эт уже перебор
Re: using - накой вас придумали??
От: Ночной Смотрящий Россия  
Дата: 04.12.15 06:49
Оценка:
Здравствуйте, Kolesiki, Вы писали:

K>За 10 лет шарпенины


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