首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >什么是不变性,我为什么要担心它?

什么是不变性,我为什么要担心它?
EN

Stack Overflow用户
提问于 2009-03-07 22:50:06
回答 15查看 9.5K关注 0票数 59

我已经读了几篇关于不变性的文章,但仍然没有很好地理解这个概念。

我最近在这里做了一个提到不变性的帖子,但由于这本身就是一个主题,我现在正在制作一个专门的帖子。

我在过去的帖子中提到过,我认为不变性是将对象设为只读并使其具有低可见性的过程。另一位成员表示,这与此没有任何关系。This page (series的一部分)使用了一个不可变的类/结构的例子,它使用只读和其他概念来锁定它。

在本例中,状态的定义到底是什么?状态是一个我还没有真正掌握的概念。

从设计指南的角度来看,不可变的类必须是不接受用户输入并且真正只返回值的类。

我的理解是,任何只返回信息的对象都应该是不可变的和“锁定的”,对吧?因此,如果我想用那个方法在专用类中返回当前时间,我应该使用引用类型,因为这将是该类型的引用,因此我受益于不变性。

EN

Stack Overflow用户

发布于 2009-03-07 23:23:00

问得好。

多线程。如果所有类型都是不可变的,那么竞争条件就不存在,您可以安全地在代码中抛出任意多个线程。

显然,如果没有可变性,你就不能完成那么多工作,从而节省了复杂的计算,所以你通常需要一些可变性来创建功能性业务软件。然而,值得注意的是,不变性应该存在于何处,例如任何事务性。

查找函数式编程和纯洁性的概念,以获得更多关于哲学的信息。您在调用堆栈上存储的(传递给方法的参数)越多,而不是通过引用(如集合或静态可用对象)使它们可用,您的程序就越纯粹,就越不容易出现竞争条件。如今,随着多核的增多,这个话题变得更加重要。

此外,不可变性减少了程序中的可能性,从而减少了潜在的复杂性和潜在的bug。

票数 3
EN
查看全部 15 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/622664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档