我该系统地看哪些书和课程?
|
如今,使用不变的值进行编程变得越来越流行。甚至像React这样的现代UI库也打算与不可变值一起使用。具有对不可变数据值的一流支持的语言将排名更高。仅仅因为不变性消除了我们代码中的一整类错误。 什么是不可变状态?简而言之,它是不变的数据。就像大多数编程语言中的字符串一样。例如,大写字符串永远不会更改原始字符串-始终会返回一个新字符串。 不变性进一步推动了这一想法,并确保一切都没有改变。总会返回一个新数组,而不是更改原始数组。更新用户名?将返回一个新的用户对象,并更新其名称,同时保留原始对象。 处于不可变状态时,不会共享任何内容,因此我们不再需要担心线程安全性的复杂性。不变性使我们的代码易于并行化。 不改变任何状态的函数称为纯函数,它们很容易测试和推理。使用纯函数时,我们不必担心函数之外的任何事情。只需专注于正在使用的这一函数,而忽略其他所有函数。你可能可以想象,开发变得多么容易(与OOP相比,必须牢记整个对象图)。
(6) 生态系统/工具 我们已经到了摩尔定律的尽头,处理器将不会更快。我们生活在多核CPU时代,实际上,任何现代应用程序都必须利用多核。 不幸的是,当今使用的大多数编程语言都是在单核计算时代设计的,根本不具备可在多核上有效运行的功能。 帮助并发的库是事后的想法,它们只是向最初不是为并发设计的语言添加了创可贴。这并不是真正的良好开发经验。在现代语言中,必须内置并发支持(请考虑使用Go / Erlang / Elixir)。
(5) 不变性 捕获异常是处理错误的一种坏方法。抛出异常是可以的,但仅在例外情况下,程序无法恢复并且必须崩溃。就像空值一样,异常会破坏类型系统。 当使用异常作为错误处理的主要方式时,就无法知道函数是返回期望值还是崩溃。引发异常的函数也是不可能组成的。 显然,仅仅由于我们无法获取某些数据而导致整个应用程序崩溃是不可能的。但这确实比我们想要的更经常发生。 一种选择是手动检查引发的异常,但是这种方法很脆弱(我们可能会忘记检查异常),并且会增加很多噪音: 如今,有更好的错误处理机制,可能的错误应在编译时进行类型检查。默认情况下不使用例外的语言将排名更高。
(4) 并发 为什么空引用不好?空引用中断类型系统。当null为默认值时,我们将不再依赖编译器来检查代码的有效性。任何可为空的值都是等待爆炸的炸弹。如果我们尝试使用我们不认为可能为空但实际上为空的值怎么办?我们得到一个运行时异常。 我们必须依靠手动运行时检查来确保所处理的值不为null。即使使用静态类型的语言,空引用也剥夺了类型系统的许多好处。 实际上,这种运行时检查(有时称为空防护)是针对不良语言设计的解决方法。他们用样板乱码。最糟糕的是,我们无法保证不会忘记检查null。 用一种好的语言,应该在编译时检查值的缺失或存在。 鼓励使用其他机制处理缺失数据的语言将排名更高。
(3) 错误处理 (编辑:盐城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


