Вопросы с тегом «immutability»

250
Если неизменные объекты хороши, почему люди продолжают создавать изменяемые объекты? [закрыто]

Если неизменяемые объекты¹ хороши, просты и дают преимущества в параллельном программировании, почему программисты продолжают создавать изменяемые объекты2? У меня есть четыре года опыта в программировании на Java, и, как я понимаю, первое, что люди делают после создания класса, - это генерирование...

130
Почему Java 8 не включает неизменяемые коллекции?

Команда Java проделала огромную работу по устранению барьеров для функционального программирования в Java 8. В частности, изменения в коллекциях java.util делают большую работу по объединению преобразований в очень быстрые потоковые операции. Учитывая, как хорошо они проделали работу, добавив...

88
Влияет ли неизменность производительности в JavaScript?

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

78
Почему String неизменяем в Java?

Я не мог понять причину этого. Я всегда использую класс String, как и другие разработчики, но когда я изменяю его значение, создается новый экземпляр String. В чем может быть причина неизменности класса String в Java? Я знаю, что есть некоторые альтернативы, такие как StringBuffer или...

69
Почему коллекции Java были реализованы с помощью «дополнительных методов» в интерфейсе?

Во время моей первой реализации, расширяющей инфраструктуру Java-коллекции, я был очень удивлен, увидев, что интерфейс коллекции содержит методы, объявленные как необязательные. Ожидается, что разработчик выдаст исключение UnsupportedOperationException, если оно не поддерживается. Это сразу...

58
Когда НЕЛЬЗЯ использовать актеров в акке / эрланге?

Я работаю с akka уже 7-8 месяцев ежедневно. Когда я начинал, я работал над приложениями и замечал, что актеры будут использоваться в любом месте внутри системы акторов для связи между большинством объектов. Я сделал то же самое - раскрутил другого актера за х / у / з. Мне кажется, что это может...

53
Стоит ли неизменность, когда нет параллелизма?

Кажется, что безопасность потоков всегда / часто упоминается как основное преимущество использования неизменяемых типов и особенно коллекций. У меня есть ситуация, когда я хотел бы убедиться, что метод не будет изменять словарь строк (которые являются неизменными в C #). Я хотел бы ограничить вещи...

47
Что Алан Кей имел в виду под «заданием» в «Ранней истории Smalltalk»?

Я читал «Раннюю историю Smalltalk», и есть несколько упоминаний о «назначении», которые заставляют меня усомниться в моем понимании его значения: Хотя ООП исходило из многих мотивов, два были центральными. Крупномасштабная задача заключалась в том, чтобы найти лучшую модульную схему для сложных...

43
Полная неизменность и объектно-ориентированное программирование

В большинстве языков ООП объекты обычно изменяемы с ограниченным набором исключений (например, кортежи и строки в Python). В большинстве функциональных языков данные неизменны. Как изменяемые, так и неизменяемые объекты имеют целый ряд собственных преимуществ и недостатков. Существуют языки,...

39
Устраняет ли неизменность необходимость блокировок при многопроцессорном программировании?

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

28
Разница между неизменным и постоянным

Я часто видел термины immutableи constиспользовал их взаимозаменяемо. Однако, из моего (небольшого) опыта, они сильно отличаются по «контракту», который они заключают в коде: Immutable заключает договор о том, что этот объект не изменится (например, кортежи Python, строки Java). Const заключает...

27
Не объявляйте интерфейсы для неизменяемых объектов

Этот вопрос перенесен из Exchange Stack Exchange, так как на него можно ответить в Software Stack Exchange. Мигрировал 6 лет назад . Не объявляйте интерфейсы для неизменяемых объектов [РЕДАКТИРОВАТЬ] Где рассматриваемые объекты представляют объекты передачи данных (DTO) или простые старые данные...

26
Неизменность в дизайне баз данных

Одним из элементов «Эффективной Java» Джошуа Блоха является представление о том, что классы должны обеспечивать как можно меньшую мутацию экземпляров, а желательно - вообще. Часто данные объекта сохраняются в базе данных некоторой формы. Это привело меня к мысли об идее неизменности в базе данных,...

26
Есть ли практический способ для неизменной структуры связанных узлов?

Я решил написать односвязный список, и у меня был план сделать внутреннюю структуру узлов неизменной. Я столкнулся с загадкой, хотя. Скажем, у меня есть следующие связанные узлы (из предыдущих addопераций): 1 -> 2 -> 3 -> 4 и сказать, что я хочу добавить 5. Чтобы сделать это, так как узел...

24
Как смоделировать циклическую ссылку между неизменяемыми объектами в C #?

В следующем примере кода у нас есть класс для неизменяемых объектов, который представляет комнату. Север, Юг, Восток и Запад представляют выходы в другие комнаты. public sealed class Room { public Room(string name, Room northExit, Room southExit, Room eastExit, Room westExit) { this.Name = name;...

23
Redux потребление памяти [закрыто]

Закрыто. Этот вопрос не по теме . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме разработки программного обеспечения в стеке. Закрыто 3 года назад . Среда Redux поддерживает парадигму неизменяемого состояния / чистой функции,...

23
Как решить, должен ли тип объекта данных быть неизменным?

Мне нравится неизменный «шаблон» из-за его сильных сторон, и в прошлом я находил его полезным для разработки систем с неизменными типами данных (некоторые, большинство или даже все). Часто, когда я это делаю, я пишу меньше ошибок, и отладка становится намного проще. Однако мои сверстники в целом...

18
Неизменные объекты и DDD идут вместе?

Рассмотрим систему, которая использует DDD (также: любую систему, которая использует ORM). Смысл любой системы реалистично, почти в каждом случае использования, состоит в том, чтобы манипулировать этими объектами домена. В противном случае нет никакого реального эффекта или цели. Изменение...

17
Есть ли конкретная стратегия проектирования, которая может быть применена для решения большинства проблем курицы и яйца при использовании неизменяемых объектов?

Исходя из опыта ООП (Java), я изучаю Scala самостоятельно. Несмотря на то, что я легко вижу преимущества индивидуального использования неизменяемых объектов, мне трудно понять, как можно создать такое целое приложение. Я приведу пример: Скажем, у меня есть объекты, которые представляют «материалы»...