Действительно ли неизменность полезна на не параллельные приложения?

С помощью ctrl + (click in text) (или cmd + (click in text) на Mac) вы можете создавать несколько курсоров. Таким образом, вы можете добавить второй, чтобы изменить оба тега одновременно.

Это единственный метод, который я знаю.

Редактировать: есть ярлык ctrl + d или cmd + d, с помощью которого вы можете отмечать одинаковые вхождения текста.

Существует также пакет, который делает именно то, что вы хотите: https://github.com/dsandstrom/atom-double-tag

8
задан GEOCHET 23 June 2009 в 11:49
поделиться

2 ответа

Мне нравится неизменность, потому что это означает, что мне не нужно доверять коду других людей, чтобы не возиться с объектами, которые, как я ожидаю, останутся такими же.

Когда вы передаете объект другому компоненту, например List , вы находитесь во власти того, что делает этот компонент. Это особенно важно, когда вы возвращаете коллекции как свойства.

public class Foo { 
  private List<Bar> _barList;
  public ICollection<Bar> BarList { get return _barList; } 
}

Ничто не мешает потребителю этого класса очистить коллекцию от меня. Даже переключение возвращаемого типа на IEnumerable не совсем безопасно. Ничто не мешает некоторому фрагменту плохо написанного кода привести его обратно к List и вызвать .Clear ().

Однако, если я действительно хочу, чтобы коллекция оставалась последовательной, я мог бы переписать ее следующим образом

public class Foo {
  private ImmutableCollection<Bar> _barList;
  public ImmutableCollection<Bar> BarList { get { return _barList; } }
}

Теперь я ' m безопасен от необходимости доверять другому коду из-за неправильного использования моего класса. Они не могут это испортить.

8
ответ дан 5 December 2019 в 08:54
поделиться

Мне нравится преимущество неизменяемости: вам нужно проверять ее только один раз - при создании объекта. На самом деле это огромный бонус.

9
ответ дан 5 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: