自分にとって、プログラムを書くということは、コンパイラに対して意味を与える作業だと考えるようになりました。 意味というのは型だったりconstだったり。あとプログラムの流れというか文脈とかもあります。 型は具体的であればあるほど、コンパイラが意味の間違いを見つけやすくなるので、出来る限り具体的に書いた方がいいと思います。 で、コンパイラは与えられた意味に矛盾があれば教えてくれますが、意味を作り出すことはできません。なので、意味を与えるという部分でコンパイラに頼ることはできません。 昨日のローカル変数に対するconstと同じような話になりますが、「全部constにしてしまえ」というのは、自分が何を作ろうとしているのか正しく把握していないのかなという気がします。厳しく言えばコンパイラへ正しく意味を伝えようとすることを放棄しているんじゃないかと。防衛的プログラミングとかそういうのに近い気がします