今日のハッカーニュースでこの投稿を見ました。私は、純粋な関数型プログラミングが現実世界の問題を抽象化するのにどのように役立つかを理解するという同じ問題に苦しんでいます。私は 7 年前に命令型プログラミングから OO プログラミングに切り替えました。私はそれをマスターしたと感じています。ここ数年で、map や reduce などの関数型プログラミングのトリックや概念をいくつか学びましたが、それらも気に入っています。私はオブジェクト指向コードでそれらを使用しており、それに満足していますが、一連の命令を抽象化するとき、コードをより美しくするためのオブジェクト指向抽象化しか考えられません。
最近、私は python の問題に取り組んでおり、それを解決するために OO を使用しないようにしています。ほとんどの場合、私のソリューションは必須のように見えますが、OO を使用すれば見栄えが良く、きれいに見えることはわかっています。私は問題を投稿しようと思っていました.機能の専門家が美しく機能的な解決策を提示できるかもしれません. 必要に応じて醜いコードを投稿できますが、投稿したくありません。:) 問題は次のとおりです。
ユーザーは画像または画像のサムネイルをリクエストできます。ユーザーが画像のサムネイルを要求し、それがまだ存在しない場合は、python の PIL モジュールを使用して作成します。また、元の画像名はハッシュコードであり、その内容を説明するものではないため、人が読めるパスを使用して元の画像またはサムネイルへのシンボリック リンクを作成します。最後に、そのイメージのシンボリック リンクにリダイレクトします。
OO では、SymlinkImage 基本クラス、ThumbnailSymlinkImage サブクラス、および OriginalSymlinkImage サブクラスを作成する可能性があります。共有データ(SymlinkImage クラス内)は、オリジナルへのパスのようなものになります。共有動作は、シンボリック リンクを作成します。サブクラスは、該当する場合はサムネイルを作成し、スーパークラスを呼び出して新しいシンボリック リンクを作成する「generate」などと呼ばれるメソッドを実装します。