プログラムの美しさ

あなたはこの会話で何が起きて欲しいですか?

プログラムの美しさについて考えたい

その「プログラム」は、どんな「プログラム」ですか?

自分が一人で書くプログラム。話の発端としては「オブジェクト指向とか使ってコードをきれいにした方が良いのだろうか」という質問を受けたことで、その質問には違和感がある。

その「プログラム」について、他に何かありますか?

オブジェクト指向を使ったからといってきれいにはならないだろ、と思う。

その「オブジェクト指向」は、どんな「オブジェクト指向」ですか?

そこは僕も質問したのだけどあんまり明確な答えは返って来なかった。たぶん「クラスとかを使って整理した方がいいのか」的なニュアンスなのだと思う
> 自分が一人で書くプログラム。話の発端としては「オブジェクト指向とか使ってコードをきれいにした方が良いのだろうか」という質問を受けたことで、その質問には違和感がある。
この「プログラム」は、どのあたりにありますか?

質問者の手元にいくつもプログラムがあって、彼はそれを「汚い」と感じているのだろう。
> 自分が一人で書くプログラム。話の発端としては「オブジェクト指向とか使ってコードをきれいにした方が良いのだろうか」という質問を受けたことで、その質問には違和感がある。
この「プログラム」は、どこにありますか?

過去に書いたプログラムとしてディスクに保存されてて、何かの機会にそれを読み返したら理解困難だった、みたいな感じかな

あなたはその「プログラム」をどう知るのですか?

あー、確かに。僕がその「彼が汚いと思ってるプログラム」を読めばもっと適切なアドバイスができるのか

その「プログラム」は、何のようですか?

目的を果たすことを最優先にして作ったプログラムは「後で読み返したときにわかりやすい」という軸が不足してるので、汚い字で書いたメモのようなもの

その「汚い字」は、どんな「汚い字」ですか?

読みやすさより書く速度を優先して書かれた字

その「速度」は、どんな「速度」ですか?

作りたい機能があるときに、それが実現されるまでの時間を短くしたいわけだ

その「機能」は、どんな「機能」ですか?

「こんなことができると便利じゃないかな?」「こんなことができると面白いんじゃないかな?」と思って、それを試して結果を見たい気持ちで作るもの。早く結果が見たいので速度重視になってしまう。

その「速度重視」は、どんな「速度重視」ですか?

未来の自分にとっての読みやすさを高めるための作業を省いてしまう

その「未来」は、どんな「未来」ですか?

そうね、それが大事なところ。未来に読み返すことがないなら読みやすさをケアする必要はない。実際には、意外と読み返す必要が出てくるし、未来が意外と近かったりする。先週書いたコードが読めなかったりする。

あなたが価値を感じているのは何ですか?

未来の自分にとっての読みやすさは大事。それがないと、未来の自分が理解できず、過去に人生の一部を消費して作った成果物が再利用できない。人生の時間は限られているので、自分が作ったものがなるべく長い期間価値を生み出し続けることが好ましい。

その「未来」について、他に何かありますか?

未来は予知できないので、作ったプログラムをもう一度読むときが来るのか来ないのかはわからないのだけど、読む場合に備えておく感じ

その「プログラム」は、どこから来るのですか?