コードはimmutableに、人生はmutableに
immutableなコード
プログラミング用語に、mutable
, immutable
というものがあります。
mutable
・変えられる、変更可能な
immutable
・変えられない、不変な
Kotlinという言語を使って説明します。
fun main(){
val days = listOf("月","火","水","木","金")
println(days)
}
// 出力
["月","火","水","木","金"]
KotlinではlistOf()
でリストを作り、その中に要素を入れることができます。この要素は宣言時のみ追加することができ、宣言後は追加したり、削除することができません。
days.add("新曜日") // ←はできない
要素に追加、削除ができないのは不便に思うかもしれませんが、コード上ではとても安全です。
コードが膨大になってくると、変更可能なものに意図せず要素が追加されて、思わぬ動作を生みかねません。いつでも追加ができる・削除ができるということは、裏を返すと、予期せぬ所でいつでも追加できてしまう、削除できてしまうということでもあります。コードの保守性を高める上で、変更不能というものは、安全性につながると考えることができるのです。
mutableな人生
人生において、mutableはとても大事だと思います。mutableは、変えられる、変更可能なの通り、柔軟であるからです。
例えばKotlinでは mutableListOfで要素の追加可能なリストを作ることができます。
使い方としてはこんな感じです。
fun main() {
val fruitsList = mutableListOf<String>()
// 果物入れる前
println("何も持ってないList:${fruitsList}")
// 果物入れた後
fruitsList.addAll(listOf("Apple","Orange","Banana"))
println("果物追加したあとのList:${fruitsList}")
}
// 出力結果
何も持ってないList:[]
果物追加したあとのList:[Apple, Orange, Banana]
mutableListの使いどころは、初期に宣言だけしておいて、後に要素を追加したい場合です。addメソッドやaddAllメソッドを使用すれば追加ができますし、removeメソッドやremoveAllメソッドを使えば逆に要素を削除できます。
自分のスキルはいつでも、何でも追加できます。自分の好きなタイミングで、いろんなことに挑戦し、自分のやれること(mySkillsの要素の中身)の幅を広げていきたいです。
val mySkills = mutableListOf<String>()
mySkills.add("料理")
mySkills.add("DIY")
一方、人間の脳にはキャパシティがあり、詰め込んだ知識や苦い記憶のように、都度忘れたいもの、忘れるべきものもあります。もし、人生の中の記憶がimmutable(変更不能)であれば、忘れたいことも忘れられないですね、、
mutableであれば、たとえ悲しいことがあったとしても、
val myMemory = mutableListOf<String>()
myMemory.AddAll(listOf("悲しかったことA","悲しかったことB","嬉しかったことA","嬉しかったことB"))
そんなときはremoveで消してしまいましょう
myMemory.remove("悲しかったことB")
println(myMemory)
// 出力結果
["悲しかったことA","嬉しかったことA","嬉しかったことB",]
おしまい