Здравствуйте, rFLY, Вы писали:
FLY>Что угодно будет плохим если не знать меры.
Как-то получилось, что именно с этой фичей меры не знают. Вероятно, играет свою роль, что решарпер все время предлагает повыкидывать имена типов.
В любом случае — им не следовало разрешать это делать, когда возникают неоднозначности в прочтении.
Здравствуйте, Codealot, Вы писали:
IT>>А можно вот прям кусочек кода, который тебя сильно сильно раздражает. А то "тяп-ляа, никакой продуманности" выглядит как откровенное нытьё. C>Особенно весело, когда там перегруженные методы и опциональные параметры. Вот и сиди чеши репу, пытаясь понять, что там за параметры.
Вывод типов он такой. Но тогда тебе нужно заклеймить практически все функциональные и полуфункциональные языки. Даже в C++ уже добавили auto. Ведь тебе по идее тогда должен раздражать и такой код:
var wtfIsThat = GetSomething()
Мне до типов как-то редко бывает дело. Но если надо, то подведи курсор к new (в твоём случае) или var и быстро узнаешь что к чему. Надеюсь ты не распечатки на бумаге читаешь? Т.е. если надо, а надо бывает в одном из двадцати случаев, то вообще не вопрос.
Что-то ещё?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Ведь тебе по идее тогда должен раздражать и такой код:
Нет, не должен. Там нет такого нагромождения неизвестных.
IT>Но если надо, то подведи курсор к new (в твоём случае) или var и быстро узнаешь что к чему. Надеюсь ты не распечатки на бумаге читаешь? Т.е. если надо, а надо бывает в одном из двадцати случаев, то вообще не вопрос.
Если в коде трудно разобраться без поддержки IDE, то этот код — полное говно. Фичи языка, которые такой код поощряют — тоже полное говно.
IT>Что-то ещё?
Вот, например, partial methods. Фича крайне сомнительной полезности, и в языке ей просто не место.
Здравствуйте, Codealot, Вы писали:
IT>>Ведь тебе по идее тогда должен раздражать и такой код: C>Нет, не должен. Там нет такого нагромождения неизвестных.
Ну давай я тебе сразу 5 var'ов напишу один за одним. Будет такое же нагромождение. Ещё раз, не нравится вывод типов — претензии к ФП.
C>Если в коде трудно разобраться без поддержки IDE, то этот код — полное говно. Фичи языка, которые такой код поощряют — тоже полное говно.
Какое наивное заблуждение. Современную производительность программиста обеспечивает не только выразительность языка, но даже в большей степени продвинутость IDE. Времена, когда можно было эффективно навигировать в нотепаде по всем 3-м файлам проекта и запомнить абсолютно все 200 функций и их сигнатуры стандартной библиотеки давно прошли. Лет 40 назад (хотя сигнатуры memcpy и cpymem я так и не запомнил, какая из них какая). Сейчас ни один современный язык не разрабатывается без учёта IDE. Прикинь! Даже C# был переписан через 10 лет его существования с нуля, чтобы облегчить его интеграцию в IDE, т.к. для этой самой интеграции требовалась команда большая, чем команда самого C#. И эта команда всё равно не успевала добавлять новые фичи языка в IDE.
F# вроде не самый плохой язык, но с убогой поддержкой IDE. Результат — на нём пишут только конченные фрики. Я знаю ещё один язык, который не стал популярным и уже приказал долго жить, главным образом благодаря тому, что поддержка IDE оказалась для его команды разработчиков непосильной задачей. Хотя сам язык я до сих пор считаю одним из лучших.
В общем, по такому твоему мнению об IDE складывается впечатление, что проекты сложнее 300-х строк ты никогда не видел. Бывает. Я тебя наверное огорчу, но сегодня IDE — это один из главных инструментов разработчика, не менее важный, чем сам язык. А дальше будет только хуже. Всякие Copilots уже подтягиваются и встраиваются они не в язык, прикинь!, а в IDE.
C>Вот, например, partial methods. Фича крайне сомнительной полезности, и в языке ей просто не место.
Эта фича предназначена и широко применяется совместно с генераторами кода.
Вот классический код для INotifyPropertyChanged, сгенерированный T4:
public partial class WeatherViewModel : INotifyPropertyChanged
{
private string? _location;
public string? Location
{
get { return _location; }
set
{
if (_location != value)
{
BeforeLocationChanged(value);
_location = value;
AfterLocationChanged();
OnLocationChanged();
}
}
}
partial void BeforeLocationChanged(string? newValue);
partial void AfterLocationChanged ();
}
Здравствуйте, Codealot, Вы писали:
C>Новый синтаксис для инициализации коллекций, который примерно такой же как старый, но другой. C>Новый синтаксис для объявления переменных... аналогично. C>Фичи, которые в теории были полезны, но их реализовали так, что лучше бы вообще не делали. Тела методов в интерфейсах, например. C>Тяп-ляп, заплатка на заплатку, никакой продуманности, никакой целостности дизайна.
C>Меня одного это уже начинает раздражать?
Так C# же с рождения такой — эдакая недо-Java, в которую тащут всё блестящее. На третий день Орлиный Глаз заметил, что у сарая нет одной стены.
Здравствуйте, IT, Вы писали:
IT>Ну давай я тебе сразу 5 var'ов напишу один за одним. Будет такое же нагромождение. Ещё раз, не нравится вывод типов — претензии к ФП.
Нет, такой же многократно вложенной хрени не будет.
IT>В общем, по такому твоему мнению об IDE складывается впечатление
Кхм, это всё ты просто из пальца высосал.
IDE помогает, но код, который без нее даже разобрать нельзя — говно.
IT>Как по мне, так волне себе качественное решение. А как бы ты сам решал подобную задачу? Какими-нибудь виртуальными методами?
Один из вариантов. Только не говори, что это будет жжжутко медленно.
Здравствуйте, vsb, Вы писали:
vsb>Так C# же с рождения такой — эдакая недо-Java, в которую тащут всё блестящее.
Раньше до такого все же не доходило. Сейчас смотрю на список новых фич и периодически чешу репу — а что, это кому-то нужно, кроме горстки людей на весь мир? И эта горстка, по чистому совпадению, в основном работает в C# team?
Здравствуйте, Codealot, Вы писали:
vsb>>Так C# же с рождения такой — эдакая недо-Java, в которую тащут всё блестящее.
C>Раньше до такого все же не доходило. Сейчас смотрю на список новых фич и периодически чешу репу — а что, это кому-то нужно, кроме горстки людей на весь мир? И эта горстка, по чистому совпадению, в основном работает в C# team?
Ну видимо у каждого своя граница. Я как ни посмотрю на очередной список фич в C#, так у меня это впечатленеи и складывается. Вот взять C# 3.
LINQ — недо-SQL, недо-ORM в языке. Не нужно.
Customer c = new Customer { Name = "John" };
вместо двух строчек. Не нужно.
MyList list = new MyList { 1, 2 };
вместо обычного метода List.of(1, 2). Не нужно.
Ну про var уже говорили, по-мне не нужная фича, но весь мир сошёл с ума, чёрт с ним.
var x = new { FirstName = "John", LastName = "Doe" };
Анонимный тип. Не нужно.
Лямбды. Ок, нужно.
Дальше мотать устал. В общем примерно так — на 1 нужную фичу 10 ненужных. И это 3 версия, 17 лет назад выпущенная. Что там с тех времён насували, страшно представить.
Вот в Java хорошо. Никаких новых фич. switch 10 лет расширяют тривиальными улучшениями (по-мне тоже не нужно, но видимо у дизайнера джавы детская травма, связанная с ADT, поэтому он их потихоньку и тянет в язык). А так все улучшения тупо на уровне JVM, то GC новый придумают, то вот потоки зелёные делают, в стандартную библиотеку какие-то методы новые потихоньку добавляют, по сути последнее фундаментальное обновление языка было в 5 версии 20 лет назад.
Здравствуйте, Codealot, Вы писали:
C>Новый синтаксис для инициализации коллекций, который примерно такой же как старый, но другой. C>Новый синтаксис для объявления переменных... аналогично. C>Фичи, которые в теории были полезны, но их реализовали так, что лучше бы вообще не делали. Тела методов в интерфейсах, например. C>Тяп-ляп, заплатка на заплатку, никакой продуманности, никакой целостности дизайна.
C>Меня одного это уже начинает раздражать?
А C# живой вообще? помнится мне когда он заходил после дельфи в 2007, когда был .NET 1.1 и потом 2.0 было конечно круто, у всех стояла винда и шарпы были на взлете.
Потом UI постепенно начал уходить в веб и мобилку, сервера на *nix. Шарпы и .NET стал совсем не нужен, хотя в плане языка мне очень нравится.
Далее конечно выпустили .NET Core и официально стали саппортить *nix, но на линухе альтернативы просто вагон и маленькая тележка.
Тот кому надо быстро наговнятькать — возьмет питон или php, то что будет тормозить на питоне перепишет на го. Тот кому нужен ынтерпрайз возьмет java/kotlin где либов просто ворох всяких разных и коммьюнити очень большое.
Тот кому надо написать что-то спейифическое возьмет С++/С/Rust/Go где тут место шарпам? Разве что только альтернатива джава/котлин?
Здравствуйте, Codealot, Вы писали:
IT>>Ну давай я тебе сразу 5 var'ов напишу один за одним. Будет такое же нагромождение. Ещё раз, не нравится вывод типов — претензии к ФП. C>Нет, такой же многократно вложенной хрени не будет.
Будет многократно не вложенная хрень.
IT>>В общем, по такому твоему мнению об IDE складывается впечатление C>Кхм, это всё ты просто из пальца высосал.
В этом топике ты единственный сосальщик. Высосать не понятно из чего проблемы, которых не существует нужно уметь.
C>IDE помогает, но код, который без нее даже разобрать нельзя — говно.
Да я уже понял. 300 строк — максимальный размер твоего проекта.
IT>>Как по мне, так волне себе качественное решение. А как бы ты сам решал подобную задачу? Какими-нибудь виртуальными методами? C>Один из вариантов. Только не говори, что это будет жжжутко медленно.
Это решение, при наличии качественного, как раз и можно назвать говном. Всё как ты любишь.
Больше у тебя, как я понимаю, никаких претензий к C#. Или ещё чего-нибудь высосешь?
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, IT, Вы писали:
IT>Будет многократно не вложенная хрень.
Не разводи демагогию. В случае с var, тип однозначно определяется результатом метода. В случае с этой фичей, что там происходит на фоне десятка перегруженных методов с разными аргументами — сам черт ногу сломит.
IT>В этом топике ты единственный сосальщик. Высосать не понятно из чего проблемы, которых не существует нужно уметь. IT>Да я уже понял. 300 строк — максимальный размер твоего проекта.
Здравствуйте, rFLY, Вы писали:
FLY>AddItem(new("foo", 123, false));
Это осложняет жизнь разработчикам библиотек и пользователям. Допустим, есть CoolLib v1.0 с таким методом void AddItem(SimpleItem item). Уже становится невозможно просто добавить void AddItem(SpecialItem item) в CoolLib v1.1 не сломав совместимость.
Т.е. overloading стал неюзабельным.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ·, Вы писали:
·>Это осложняет жизнь разработчикам библиотек и пользователям. Допустим, есть CoolLib v1.0 с таким методом void AddItem(SimpleItem item). Уже становится невозможно просто добавить void AddItem(SpecialItem item) в CoolLib v1.1 не сломав совместимость. ·>Т.е. overloading стал неюзабельным.
А как компилятор это пропускает или в AddItem принимает object без конкретного типа?
Здравствуйте, rFLY, Вы писали:
FLY>Здравствуйте, ·, Вы писали:
FLY>·>Это осложняет жизнь разработчикам библиотек и пользователям. Допустим, есть CoolLib v1.0 с таким методом void AddItem(SimpleItem item). Уже становится невозможно просто добавить void AddItem(SpecialItem item) в CoolLib v1.1 не сломав совместимость. FLY>·>Т.е. overloading стал неюзабельным. FLY>А как компилятор это пропускает или в AddItem принимает object без конкретного типа?
Я не понял вопрос. Повторюсь:
CoolLib v1.0:
Здравствуйте, ·, Вы писали:
·>весь юзерский код при апдейте v1.0 -> v1.1 перестаёт компиляться с ambiguity.
В библиотеку было добавлено новое объявление метода по этому и ошибки с неоднозначностью? Тут, не уверен — не обгоняй, чего еще можно сказать.
_>А C# живой вообще? помнится мне когда он заходил после дельфи в 2007, когда был .NET 1.1 и потом 2.0 было конечно круто, у всех стояла винда и шарпы были на взлете.
WPF ты стало быть пропустил. _>Потом UI постепенно начал уходить в веб и мобилку, сервера на *nix. Шарпы и .NET стал совсем не нужен, хотя в плане языка мне очень нравится.
Никто никуда не "начал уходить", это физически невозможно в большинстве задач для стационарных машин (ну нет у смердфона большого экрана и клавиатуры с мышью, и ничего созидательного кроме игрушек и обмана на деньги туда не влазит). _>Тот кому надо быстро наговнятькать — возьмет питон или php, то что будет тормозить на питоне перепишет на го. Тот кому нужен ынтерпрайз возьмет java/kotlin где либов просто ворох всяких разных и коммьюнити очень большое. _>Тот кому надо написать что-то спейифическое возьмет С++/С/Rust/Go где тут место шарпам? Разве что только альтернатива джава/котлин?
Т. е. кому надо "наговнятькать", тот отвлечётся на несколько лет выучить всё это?
А кому надо сделать рентабельно и качественно, и потом поддерживать, и он уже знает C#, зачем ему что-то другое?
Здравствуйте, rFLY, Вы писали:
FLY>·>весь юзерский код при апдейте v1.0 -> v1.1 перестаёт компиляться с ambiguity. FLY>В библиотеку было добавлено новое объявление метода по этому и ошибки с неоднозначностью?
Да.
FLY>Тут, не уверен — не обгоняй, чего еще можно сказать.
Так я хочу сказать, о том как добавление абсолютно бесполезного сахара ведёт к поломке действительно удобной фичи оверлоада методов. Сабж, однако.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, Codealot, Вы писали:
C>Здравствуйте, vsb, Вы писали:
vsb>>Так C# же с рождения такой — эдакая недо-Java, в которую тащут всё блестящее.
C>Раньше до такого все же не доходило. Сейчас смотрю на список новых фич и периодически чешу репу — а что, это кому-то нужно, кроме горстки людей на весь мир? И эта горстка, по чистому совпадению, в основном работает в C# team?
ну так есть команда, ей же надо что-то делать,чтобы народ видел фичи новые идут.