Упрощение логики операторов - PullRequest
2 голосов
/ 15 января 2010

Я разделил тест, чтобы определить, перекрываются ли два элемента расписания из-за его нечитаемости.

Есть ли какое-либо приложение, которое поможет упростить логическое утверждение?

Пример: (изначально ошибочный пример, но приводятся причины, по которым я его запрашиваю)

if (x < y && y < z && x < z)  

может быть уменьшено до

if (x < y && y < z)

Мой код:

return (shift.Start <= shift2.Start && shift.End >= shift2.End) || (shift2.Start <= shift.Start && shift2.End >= shift.Start)

Я бы хотел сделать это проще, и я верю, что это возможно, просто не знаю, как.

Видя, что это действительно не зависит от языка, было бы неплохо даже конвертировать в другой скрипт, чтобы найти возможности, не нужно, чтобы он был в C #, например.

Ответы [ 11 ]

0 голосов
/ 15 января 2010

Мало того, что это опасно, но это часто приводит к усложнению поддержки кода.Булева логика легче понять, если разбить ее на конкретные шаги.Сжатие логики часто приводит к тому, что понять логику становится сложнее.

т.е. в вашем примере, почему мы проверяем, если x < z, когда то, что мы действительно хотим знать, это x < y && y < z?

Самое простое решение часто является лучшим.Сжатие вашей логики в «кулер», но менее читаемый код не годится в долгосрочной перспективе.

...