Comments 9
А почему не сделать таблицу? На питоне это будет словарь, значения - вызовы функций, ключи - логические выражения. Тогда при изменениях, просто добавляем или удаляем выражения в словарь.
Лично я для чуть более-менее сложных логических выражений всегда делаю таблицу. Конечно это очень по старинному, но ведь работает, и хорошо.
Ну, собственно, именно по-этому нужен регулярный рефакторинг.
Лучшая форма не самая краткая, а самая
Модифицируемая
Понятная
С возможностью просмотра в отладчике или логе, какое именно условие сработало
Элементы И-НЕ (NAND) и ИЛИ-НЕ (NOR) часто дешевле и универсальнее. Поэтому не всё так просто с картами Карно :)
Не надо карты Карно использовать, пользуйтесь симметричными картами:
Ну так идеальный код не самый компактный. И даже не самый понятный. А такой, который потребует минимум правок, когда менеджер прибежит с новыми требованиями . Про которые конечно же заранее ничего не известно. Хотя при желании можно попробовать спрогнозировать, в каких аспектах система будет меняться, а в каких - нет. И заложить в архитектуру то, что конечно же однажды все равно поменяется ;)
Откуда берётся запутанный код