Я видел этот пост в хакерских новостях сегодня. Я борюсь с теми же проблемами понимания того, как чистое функциональное программирование поможет мне абстрагировать проблему реального мира. Я сделал переход от императива к программированию OO 7 лет назад. Я чувствую, что я справился с этим, и это хорошо послужило мне. За последние пару лет я узнал некоторые трюки и концепции в функциональном программировании, такие как карта и сокращение, и мне они нравятся. Я использовал их в своем OO-коде и был доволен этим, но при абстрагировании набора инструкций я могу думать только об абстракциях OO, чтобы сделать код более красивым.
Недавно я работал над проблемой в python, и я пытался избежать использования OO для ее решения. По большей части мое решение выглядит императивным, и я знаю, что я мог бы сделать его красивым и чистым, если бы использовал OO. Я думал, что поставил бы проблему, и, возможно, функциональные эксперты могут создать решение, красивое и функциональное. Я могу опубликовать свой уродливый код, если нужно, но скорее не буду.:) Вот проблема:
Пользователь может запросить изображение или миниатюру изображения. Если пользователь запрашивает миниатюру изображения, а он еще не существует, создайте его с помощью модуля PIL PILON. Также создайте символическую ссылку на оригинал или миниатюру с помощью читаемого человеком пути, потому что исходное имя изображения является хэш-кодом и не описывает его содержимое. Наконец, перенаправляйтесь к символической ссылке этого изображения.
В OO я, скорее всего, создаю базовый класс SymlinkImage, подкласс ThumbnailSymlinkImage и подкласс OriginalSymlinkImage. Общие данные (в классе SymlinkImage) будут такими, как путь к оригиналу. Совместное поведение будет создавать символическую ссылку. Подклассы реализуют метод, называемый "сгенерированный", который будет отвечать за создание миниатюры, если это применимо, и сделать вызов их суперкласса для создания новой символической ссылки.