Информация об изменениях

Сообщение Re[2]: C# 9.0 begins to take shape от 24.12.2019 16:24

Изменено 24.12.2019 16:51 Somescout

Re[2]: C# 9.0 begins to take shape
Здравствуйте, Kolesiki, Вы писали:

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


Y>>Горшочек продолжает варить, если кому интересно.


K>Судя по тенденциям, горшочек — "ночной"?


Y>>* Primary constructors


K>Маразм ленивой индусни. Они даже в собственных документах не могут толком объяснить, зачем это нужно — пишут какую-то ахинею, от которой обычному коду ни тепло, ни холодно. Устали макаки писать конструкторы, давайте теперь весь язык изуродуем, чтобы паре макак раз в год пригодилась эта... гм... "фича".


Это "гм... "фича"" нужна для Dependency Injection, и используется постоянно. Каждый раз писать код:
class UserService {
  private readonly IDbContext dbContext;

  public UserService(IDbContext dbContext) {
    this.dbContext=dbContext;
  }
}


Надоедает очень быстро, плюс функционально тут других конструкторов и не предусмотрено. Вся эта портянка заменяется простым:

class UserService(IDbContext dbContext) {
}


Хотя синтаксис мне не нравится, имхо в TypeScript лучше:
class Test {
    constructor(private dbContext:IDbContext) {
    }
}
Re[2]: C# 9.0 begins to take shape
Здравствуйте, Kolesiki, Вы писали:

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


Y>>Горшочек продолжает варить, если кому интересно.


K>Судя по тенденциям, горшочек — "ночной"?


Y>>* Primary constructors


K>Маразм ленивой индусни. Они даже в собственных документах не могут толком объяснить, зачем это нужно — пишут какую-то ахинею, от которой обычному коду ни тепло, ни холодно. Устали макаки писать конструкторы, давайте теперь весь язык изуродуем, чтобы паре макак раз в год пригодилась эта... гм... "фича".


Это "гм... "фича"" нужна для Dependency Injection, и используется постоянно. Каждый раз писать код:
class UserService {
  private readonly IDbContext dbContext;

  public UserService(IDbContext dbContext) {
    this.dbContext=dbContext;
  }
}


Надоедает очень быстро, плюс функционально тут других конструкторов и не предусмотрено. Вся эта портянка заменяется простым:

class UserService(IDbContext dbContext) {
}


Хотя синтаксис мне не нравится, имхо в TypeScript лучше:
class Test {
    constructor(private dbContext:IDbContext) {
    }
}


ЗЫ. Хотя, пожалуй, не такой уж плохой синтаксис: сразу видны зависимости класса.