Re[5]: [C#] горшочек, не вари
От: IT Россия linq2db.com
Дата: 29.10.24 21:00
Оценка: +2
Здравствуйте, 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 ();
}


Вот использование

partial class WeatherViewModel
{
    partial void AfterLocationChanged()
    {
        _lastUpdate = DateTime.MinValue;
        Update();
    }
}


Из двух partial методов вызов генерируется только для одного, который реализуется разработчиком. В результате всё очень гибко и эффективно.

Как по мне, так волне себе качественное решение. А как бы ты сам решал подобную задачу? Какими-нибудь виртуальными методами?
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.