Re: RequireQualifiedAccess польза или вред?
От: Sinclair Россия https://github.com/evilguest/
Дата: 12.02.24 11:45
Оценка: +4
Здравствуйте, Разраб, Вы писали:

Р>В последних версиях C# появилась возможность статического импорта класса

Р>и последующего вызова статик методов как локальных методов.
Эмм, не то, чтобы совсем в последних. Это — С# 6.0, примерно 8 лет назад. На всякий случай: актуальная версия C# — 11.

Р>Не ухудшит ли это читабельность кода?

Ну, раз за 8 лет не ухудшило, то и дальше не ухудшит.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: RequireQualifiedAccess польза или вред?
От: _FRED_ Черногория
Дата: 12.02.24 17:06
Оценка: 5 (1) +2
Здравствуйте, Разраб, Вы писали:

Р>В последних версиях C# появилась возможность статического импорта класса

Р>и последующего вызова статик методов как локальных методов.
Р>Не ухудшит ли это читабельность кода?

Пример: в файлах, где много работы с деревьями выражений (например, System.Linq.Expressions) из делаю:
using static Expression;

и потом такое вот кажется горазно нагляднее:
  internal Expression<Comparison<T>> BuildCompare(ParameterExpression x, ParameterExpression y) {
    var expressions = Expressions.ConvertAll(item => item.AsCompare(this, x, y));
    expressions.Reverse();

    Expression seed = Return(LabelTargetReturn, expressions[0]);
    var expression = expressions.Skip(1).Aggregate(seed, static (acc, value) => IfThenElse(NotEqual(Assign(Compare, value), Zero), ReturnCompare, acc));
    var body = IsValueType
      ? expression
      // if((object)x == (object)y) {
      //   return 0;
      // } else if((object)x == null) {
      //   return -1;
      // } else if((object)y == null) {
      //   return 1;
      // } else {
      //   return expression;
      // }//if
      : IfThenElse(ReferenceEqual(x, y), ReturnZero, IfThenElse(IsNull(x), ReturnMinusOne, IfThenElse(IsNull(y), ReturnOne, expression)));
    var block = Block(CompareVariables, body, LabelZero);
    return Lambda<Comparison<T>>(block, x, y);
  }

отсутствие Expression. мне кажется в таких случаях значительно улучшает понимание того, что делается и как. Информации меньше (но достаточно) — значит и проще.

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

Переменные/функции программист так же может называть почти как хочет и этим тоже можно как упростить понимание и поддержку кода или сильно усложность
Help will always be given at Hogwarts to those who ask for it.
Re: RequireQualifiedAccess польза или вред?
От: Qulac Россия  
Дата: 12.02.24 07:10
Оценка: +2
Здравствуйте, Разраб, Вы писали:

Р>В последних версиях C# появилась возможность статического импорта класса

Р>и последующего вызова статик методов как локальных методов.
Р>Не ухудшит ли это читабельность кода?
Р>В том же Oberon-2 напротив ввели жесткое правило обращаться к процедурам только через имя модуля(можно задавать короткие алиасы)
Р>в отличии от Modula-2 где можно импортировать отдельные функции и вызывать их по частичному имени.

Р>
Р>using static System.Console;

Р>WriteLine();
Р>


По мне вот так лучше:
Р>
Р>using System;
Р>Console.WriteLine();
Р>
Программа – это мысли спрессованные в код
Отредактировано 12.02.2024 7:12 Qulac . Предыдущая версия .
Re: RequireQualifiedAccess польза или вред?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 12.02.24 11:17
Оценка: 5 (1)
Здравствуйте, Разраб, Вы писали:

По мне так это упрощения, для конкуренции с питонами и прочими.
Понятно, что для чтения проще Console.WriteLine();
Но есть классы которые используются часто, и можно опускать имя класс.
По мне так разницы особой нет.
и солнце б утром не вставало, когда бы не было меня
RequireQualifiedAccess польза или вред?
От: Разраб  
Дата: 12.02.24 03:55
Оценка:
В последних версиях C# появилась возможность статического импорта класса
и последующего вызова статик методов как локальных методов.
Не ухудшит ли это читабельность кода?
В том же Oberon-2 напротив ввели жесткое правило обращаться к процедурам только через имя модуля(можно задавать короткие алиасы)
в отличии от Modula-2 где можно импортировать отдельные функции и вызывать их по частичному имени.

using static System.Console;

WriteLine();


using System;

Console.WriteLine();
☭ ✊ В мире нет ничего, кроме движущейся материи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.