关于数据的(不)可变性问题

1 · Johnson Lee · April 11, 2022, midnight
关于数据的可变性或者不可变性,是指数据在被创建后,到底支不支持可变(修改),尽管我们知道 Java 中的 String 采用不可变的设计有诸多的优点,但似乎在我过去的职业生涯中,很少系统性地去思考这个问题,直到最近,看其他同学的代码的时候,才意识到这个问题的严重性。 编程习惯 final 关键字 屈指一算,我从事编程工作已有十年有余,写过的代码中,Java 占了绝大部分,看过我写的代码的同学可能会发现一个现象,就是我喜欢在变量前面加 final ,为什么会养成这样的习惯呢? 这个习惯很早就养成了,记得当年不光写 Java ,也会写 C/C++ ,尤其是对于 C 代码来说,在 Java 中一个很简单的操作,在 C 中都需要数行甚到数十行代码来实现,而且早期的 C 编译器对于变量的声明的位置有一定的要求,不像 Java 随用随声明,而是尽可能的在函数的开头声明变量,这样导致的问题是,在代码很长的情况下,不知道变量在什么时候会被修改,很有可能会因为手抖而误改,所以,写起代码来要尤为小心,尽可能的让变量的修改操作更集中。所以,在写 Java 的过程中,为了避免非预期的对变量的修改,便自...