ICollection vs System.Collections.ICollection
От: Visor2004  
Дата: 23.10.11 12:23
Оценка:
Господа, а вас не напрягает, что при разработке все время возникает конфликт типов из Nemerle.Collections и System.Collections? Чем типы из Nemerle.Collections лучше стандартных?
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re: ICollection vs System.Collections.ICollection
От: catbert  
Дата: 23.10.11 16:24
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Господа, а вас не напрягает, что при разработке все время возникает конфликт типов из Nemerle.Collections и System.Collections? Чем типы из Nemerle.Collections лучше стандартных?


Не напрягает (если у вас какая-то проблема, расскажите). Основная причина держать Nemerle.Collections — поддержка .NET 2.0, где нету LINQ-методов, HashSet и еще всякого. Ну, и иммутабельные коллекции.
Re: ICollection vs System.Collections.ICollection
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.10.11 17:09
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Господа, а вас не напрягает, что при разработке все время возникает конфликт типов из Nemerle.Collections и System.Collections? Чем типы из Nemerle.Collections лучше стандартных?


Нет. В System.Collections лежит жуткий легаси. Забудь про него и используй System.Collections.Generics
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: ICollection vs System.Collections.ICollection
От: Visor2004  
Дата: 23.10.11 17:32
Оценка:
Здравствуйте, catbert, Вы писали:

C>Здравствуйте, Visor2004, Вы писали:


V>>Господа, а вас не напрягает, что при разработке все время возникает конфликт типов из Nemerle.Collections и System.Collections? Чем типы из Nemerle.Collections лучше стандартных?


C>Не напрягает (если у вас какая-то проблема, расскажите). Основная причина держать Nemerle.Collections — поддержка .NET 2.0, где нету LINQ-методов, HashSet и еще всякого. Ну, и иммутабельные коллекции.


Да нет особых каких-то проблем, просто по-умолчанию при создании файла подключаются оба пространства имен и стоит написать в коде, что-то типа ICollection, то компилятор ругается. Просто интересное поведение по-умолчанию, может все-таки не стоит подключать Nemerle.Collections при создании нового файла?
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re[3]: ICollection vs System.Collections.ICollection
От: catbert  
Дата: 23.10.11 18:06
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>Да нет особых каких-то проблем, просто по-умолчанию при создании файла подключаются оба пространства имен и стоит написать в коде, что-то типа ICollection, то компилятор ругается. Просто интересное поведение по-умолчанию, может все-таки не стоит подключать Nemerle.Collections при создании нового файла?


Да я бы там половину юзингов убрал. Nemerle.Text, допустим, зачем?
Re[4]: ICollection vs System.Collections.ICollection
От: Visor2004  
Дата: 23.10.11 18:20
Оценка:
Здравствуйте, catbert, Вы писали:

C>Здравствуйте, Visor2004, Вы писали:


V>>Да нет особых каких-то проблем, просто по-умолчанию при создании файла подключаются оба пространства имен и стоит написать в коде, что-то типа ICollection, то компилятор ругается. Просто интересное поведение по-умолчанию, может все-таки не стоит подключать Nemerle.Collections при создании нового файла?


C>Да я бы там половину юзингов убрал. Nemerle.Text, допустим, зачем?


ну оно по-крайней мере не мешает код писать а вот зачем подключать пространство имен, которое зачастую ведет к ошибкам я не понимаю.
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re[5]: ICollection vs System.Collections.ICollection
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.10.11 20:56
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>ну оно по-крайней мере не мешает код писать а вот зачем подключать пространство имен, которое зачастую ведет к ошибкам я не понимаю.


Это ты, вот сейчас, очень верно подметил! Так может объяснишь зачем подключать System.Collections? Вот какие такие полезные типы в нем имеются, что ты их постоянно используешь?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: ICollection vs System.Collections.ICollection
От: Visor2004  
Дата: 24.10.11 11:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Visor2004, Вы писали:


V>>ну оно по-крайней мере не мешает код писать а вот зачем подключать пространство имен, которое зачастую ведет к ошибкам я не понимаю.


VD>Это ты, вот сейчас, очень верно подметил!


сарказм уловил но я разве где-то сказал, что надо по-умолчанию подключать System.Collections? на мой взгляд было бы достаточно подключения System и System.Linq. Изначально-то проблема была в наличии двух конфликтующих пространств имен, и если принимать решение о том, какой из них убрать, то я бы высказался за то, чтобы убрать именно Nemerle.Collections, в котором "лежит жуткий легаси"

VD>Так может объяснишь зачем подключать System.Collections? Вот какие такие полезные типы в нем имеются, что ты их постоянно используешь?


метрики говорят, что у меня в 89% файлах используются типы из System.Collections.Genenric, в основном IEnumerable<T> конечно. Хотелось бы поправиться, в постах выше я везде имел ввиду именно System.Collections.Generic, а не дремучий System.Collections, то я просто неудачно сократил текст
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re[7]: ICollection vs System.Collections.ICollection
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.10.11 13:18
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>сарказм уловил но я разве где-то сказал, что надо по-умолчанию подключать System.Collections? на мой взгляд было бы достаточно подключения System и System.Linq. Изначально-то проблема была в наличии двух конфликтующих пространств имен, и если принимать решение о том, какой из них убрать, то я бы высказался за то, чтобы убрать именно Nemerle.Collections, в котором "лежит жуткий легаси"


А где одни конфликтуют то?

И почему не убрать совершенно не кчемную System.Collections?

VD>>Так может объяснишь зачем подключать System.Collections? Вот какие такие полезные типы в нем имеются, что ты их постоянно используешь?


V>метрики говорят, что у меня в 89% файлах используются типы из System.Collections.Genenric, в основном IEnumerable<T> конечно. Хотелось бы поправиться, в постах выше я везде имел ввиду именно System.Collections.Generic,


Ну, так с System.Collections.Generic, как раз, конфликтов то и нет. Были, но мы их по мере сил вычистили. Если что-то осталось, то давай конкретно по пунктам. Вычистим и их.

V>а не дремучий System.Collections, то я просто неудачно сократил текст


Тогда остается только вопрос — в чем вопрос?

В Nemerle.Collections находится много полезных коллекций и методов расширения. Лично мне они почти всегда нужны. С System.Collections.Generic они не конфилктуют, вроде. А для System.Collections можно и алиас создать:
using CS = System.Collections.Generic;

или вообще открыть только нужный тип.

За последние 4 года мне практически не удавалось нарваться на конфликт.

Давай, лучше, ты приведешь конкретные пример конфликтов. Тогда и подумаем что с ними делать. А просто так удалять этот юснг — не правильно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: ICollection vs System.Collections.ICollection
От: Visor2004  
Дата: 25.10.11 07:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>За последние 4 года мне практически не удавалось нарваться на конфликт.


за 4 года не создал ни одной коллекции?

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


То что вспомнил сходу:

using Nemerle.Collections;
using Nemerle.Text;
using Nemerle.Utility;

using System;
using System.Collections.Generic;
using System.Console;
using System.Linq;

class TestCollection : ICollection[int]
{

}

module Program
{
  Main() : void
  {
    WriteLine("Hi!");
    _ = ReadLine();
  }
}


выдает:


Error 1 type name `ICollection' is ambiguous, it could be:


Соответственно все классы, которые имеют свойство типа ICollection[T], тоже начинают парить мозг такими ошибками.
Помните!!! ваш говнокод кому-то предстоит разгребать.
Re[8]: ICollection vs System.Collections.ICollection
От: xShiFT Россия  
Дата: 25.10.11 09:16
Оценка:
Здравствуйте, VladD2, Вы писали:

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



typing fails on ambiguity between overloads:

Posible overload: method System.Linq.Enumerable.Reverse(source : System.Collections.Generic.IEnumerable[TSource]) : System.Collections.Generic.IEnumerable[TSource]
Posible overload: method Nemerle.Collections.NCollectionsExtensions.Reverse(seq : System.Collections.Generic.IEnumerable[T]) : System.Collections.Generic.List[T]
Re[9]: ICollection vs System.Collections.ICollection
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.10.11 15:09
Оценка:
Здравствуйте, Visor2004, Вы писали:

V>То что вспомнил сходу:


V>
V>using Nemerle.Collections;
V>using System.Collections.Generic;

V>class TestCollection : ICollection[int]
V>{

V>}
V>


И где здесь System.Collections? Это конфликт с System.Collections.Generic. Тут я согласен. Такие конфликты лучше устранять.

Заведи issue. Устраним как будет время. Или можешь даже сам это сделать. Переименуй его в INCollection и сделай пул-реквест.

V>Соответственно все классы, которые имеют свойство типа ICollection[T], тоже начинают парить мозг такими ошибками.


Я вот никогда не использую ICollection[T]. Какой в нем прок?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ICollection vs System.Collections.ICollection
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.10.11 15:23
Оценка:
Здравствуйте, xShiFT, Вы писали:

SFT>typing fails on ambiguity between overloads:


SFT>Posible overload: method System.Linq.Enumerable.Reverse(source : System.Collections.Generic.IEnumerable[TSource]) : System.Collections.Generic.IEnumerable[TSource]

SFT>Posible overload: method Nemerle.Collections.NCollectionsExtensions.Reverse(seq : System.Collections.Generic.IEnumerable[T]) : System.Collections.Generic.List[T]

Только причем тут System.Collections?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ICollection vs System.Collections.ICollection
От: xShiFT Россия  
Дата: 25.10.11 17:13
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Только причем тут System.Collections?


Я запостил за компанию. Так как тоже конфликт.

А System.Collections тут совсем не причём.
Тредстартер не удачно сократил. Он уже это говорил.
Он имел ввиду System.Collections.Generic
Re[11]: ICollection vs System.Collections.ICollection
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.10.11 17:20
Оценка:
Здравствуйте, xShiFT, Вы писали:

SFT>Я запостил за компанию. Так как тоже конфликт.


SFT>А System.Collections тут совсем не причём.

SFT>Тредстартер не удачно сократил. Он уже это говорил.
SFT>Он имел ввиду System.Collections.Generic

Если речь о System.Collections.Generic, то тут я согласен. Пересечения с именами из этого пространства имен нужно устранят. Мы просто добавляем букву N к пересекающися именам.

Если вы нашли такую проблему, то заводите isseu по ним. А еще лучше сразу пресылайте пул-реквесты. Только не забывайте прогонять многопроходную компиляцию с тестами (т.е. DevBuildForCommit-4.cmd и DevBuildForCommit.cmd).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ICollection vs System.Collections.ICollection
От: _nn_ www.nemerleweb.com
Дата: 26.10.11 13:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я вот никогда не использую ICollection[T]. Какой в нем прок?


А зачем Nemerle.Collections.ICollection нужен ?
Кроме LinkedList я не нашел его применения.

А так все эти методы реализуются через методы расширения.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[11]: ICollection vs System.Collections.ICollection
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.10.11 15:03
Оценка:
Здравствуйте, _nn_, Вы писали:

__>А зачем Nemerle.Collections.ICollection нужен ?

__>Кроме LinkedList я не нашел его применения.

__>А так все эти методы реализуются через методы расширения.


Погляди на места где он используется. Если их мало или их нет, то можно и грохнуть.

Переименовать точно можно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: ICollection vs System.Collections.ICollection
От: _nn_ www.nemerleweb.com
Дата: 26.10.11 15:29
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _nn_, Вы писали:


__>>А зачем Nemerle.Collections.ICollection нужен ?

__>>Кроме LinkedList я не нашел его применения.

__>>А так все эти методы реализуются через методы расширения.


VD>Погляди на места где он используется. Если их мало или их нет, то можно и грохнуть.


VD>Переименовать точно можно.


Тогда и Nemerle.Collections.LinkedList стоит переименовать, ведь есть коллизия с System.Collections.Generic.LinkedList, а также Stack и Queue заодно.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[13]: ICollection vs System.Collections.ICollection
От: _nn_ www.nemerleweb.com
Дата: 26.10.11 16:15
Оценка: +1
Здравствуйте, _nn_, Вы писали:

Nemerle.Collections.ICollection -> Nemerle.Collections.INCollection
Nemerle.Collections.LinkedList  -> Nemerle.Collections.NLinkedList
Nemerle.Collections.Queue       -> Nemerle.Collections.NQueue
Nemerle.Collections.Stack       -> Nemerle.Collections.NStack


Так что ли переименовать ?

А если MS добавит SCG.Set, то и Set надо переименовывать ?

Вроде бы пространства имен именно и для того, чтобы можно было задавать одинаковые имена в разных пространствах имен.
Или снова тут Закон Дырявых Абстракций ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[14]: ICollection vs System.Collections.ICollection
От: _nn_ www.nemerleweb.com
Дата: 27.10.11 07:23
Оценка:
Здравствуйте, _nn_, Вы писали:

Как мне кажется, стоит отделить коллекции от методов расширения и тогда проблем не будет.

Методы расширения: Nemerle.Collections.Extensions.
Коллекции: Nemerle.Collections.

По умолчанию делать
using Nemerle.Collections.Extensions;

А кому нужны будут коллекции Nemerle , то там уже легко чинится using NC = Nemerle.Collections;

Есть идеи по лучше ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.