expression-bodied members
От: #John Европа https://github.com/ichensky
Дата: 20.10.20 18:09
Оценка:
Здравствуйте,
когда вы предпочитатет использовать `expression-bodied members` ?
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members

    // 1
    public <IEnumerable<Dto>> func() 
        => new obj.Select(x => new CoolObj(x))
        .Where(x => x.Value > 200 && x.Value < 400)
        .Select(x => new Dto(x));

    // 2
    public <IEnumerable<Dto>> func() 
    {
        var dto = new obj.Select(x => new CoolObj(x))
            .Where(x => x.Value > 200 && x.Value < 400)
            .Select(x => new Dto(x));
        
        return dto;
    }


Мне больше нравится первый вариант, т.к. тело метода короче, значит больше строк кода влезет на экран.
Но в интернете на SO видел посты, что некоторые методы написаные в 1м стиле сложнее читать чем во втором.
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Re: expression-bodied members
От: Danchik Украина  
Дата: 20.10.20 20:24
Оценка: 80 (1) +3
Здравствуйте, #John, Вы писали:

[Skip]

J>Мне больше нравится первый вариант, т.к. тело метода короче, значит больше строк кода влезет на экран.

J>Но в интернете на SO видел посты, что некоторые методы написаные в 1м стиле сложнее читать чем во втором.

1. Навится когда тело в одну строчку, иначе каша
2. Тут же дает преимущество в дебаге
Re: expression-bodied members
От: Sinclair Россия https://github.com/evilguest/
Дата: 21.10.20 02:57
Оценка: +2
Здравствуйте, #John, Вы писали:

J>Здравствуйте,

J>когда вы предпочитатет использовать `expression-bodied members` ?
Всегда, когда возможно.

J>
J>    // 1
J>    public <IEnumerable<Dto>> func() 
J>        => new obj.Select(x => new CoolObj(x))
J>        .Where(x => x.Value > 200 && x.Value < 400)
J>        .Select(x => new Dto(x));
J>

J>
J>    // 2
J>    public <IEnumerable<Dto>> func() 
J>    {
J>        var dto = new obj.Select(x => new CoolObj(x))
J>            .Where(x => x.Value > 200 && x.Value < 400)
J>            .Select(x => new Dto(x));
        
J>        return dto;
J>    }
J>


J>Но в интернете на SO видел посты, что некоторые методы написаные в 1м стиле сложнее читать чем во втором.


Конечно. Потому что над писать вот так:
public <IEnumerable<Dto>> func() 
        => from x in new CoolObj(new obj) 
           where x.Value > 200 && x.Value < 400
           select new Dto(x);

Все эти цепочки методов с их бесконечными x=>, где непонятно, какой из x что обозначает, только затрудняют восприятие.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: expression-bodied members
От: #John Европа https://github.com/ichensky
Дата: 21.10.20 09:54
Оценка:
Здравствуйте, Danchik, Вы писали:

D>2. Тут же дает преимущество в дебаге

Это недостаток дебагера в VS, что нельзя выделить сразу несколько строк кода(как в ms sql management studio)
и посмотреть результат, уже кучу лет мечтаю, что бы добавили такой функционал в VS.
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Re[3]: expression-bodied members
От: Danchik Украина  
Дата: 21.10.20 15:14
Оценка:
Здравствуйте, #John, Вы писали:

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


D>>2. Тут же дает преимущество в дебаге

J>Это недостаток дебагера в VS, что нельзя выделить сразу несколько строк кода(как в ms sql management studio)
J>и посмотреть результат, уже кучу лет мечтаю, что бы добавили такой функционал в VS.

Пока выделишь, тут уже и Shift+F9 можно нажать.
Re: expression-bodied members
От: alexzzzz  
Дата: 21.10.20 20:16
Оценка: +3
Здравствуйте, #John, Вы писали:

J>когда вы предпочитаете использовать `expression-bodied members` ?


В типах, где все или подавляющее большинство членов однострочные. Чаще это просто какой-то демонстрационный код — опубликовать на форуме пример чего-нибудь. А в реальности я задолбался менять скобочки на стрелочки и обратно по несколько раз у одних и тех же методов. Решил остановиться на старых скобочках ― они универсальны и всё методы выглядят единообразно.
Re[2]: expression-bodied members
От: Mystic Artifact  
Дата: 22.10.20 15:31
Оценка:
Здравствуйте, alexzzzz, Вы писали:

Меня особенно сильно раздражает менять стрелочку на на нормальный геттер, по той лишь причине, что на геттер нужно поставить атрибут.
Re: expression-bodied members
От: _NN_ www.nemerleweb.com
Дата: 22.10.20 20:29
Оценка:
Здравствуйте, #John, Вы писали:

J>Здравствуйте,

J>когда вы предпочитатет использовать `expression-bodied members` ?
J>https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/statements-expressions-operators/expression-bodied-members

Выставил везде где можно.
Пол года полёт нормальный.
Если надо править метод, то ReSharper/Roslyn одним нажатием умеют превращать скобки в стрелку и обратно.
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.