LINUX.ORG.RU

История изменений

Исправление www_linux_org_ru, (текущая версия) :

Если «длина(х) == длина(у1) + длина(у2)» - инвариант алгоритма, в котором эта функция используется,

да

не выставлять эту функцию во внешний интерфейс и паниковать при нарушении инварианта.

это как «не выставлять»? допустим, у нас несколько алгоритмов, которым нужна эта функций, причем их могут добавлять совершенно посторонние люди (которые в курсе про инвариант из доков)

и паниковать при нарушении инварианта.

для паники (или ее отсутствия) придется считать каждый раз длину; а если подсчитать длину долго (например, нужно пройти по всему массиву), а вот найти точку где длина(х1) == длина(у1) можно быстро (например бинарным поиском — такова специфика задачи) ?

Исправление www_linux_org_ru, :

Если «длина(х) == длина(у1) + длина(у2)» - инвариант алгоритма, в котором эта функция используется,

да

не выставлять эту функцию во внешний интерфейс и паниковать при нарушении инварианта.

это как «не выставлять»? допустим, у нас несколько алгоритмов, которым нужна эта функций, причем их могут добавлять совершенно посторонние люди (которые в курсе про инвариант из доков)

и паниковать при нарушении инварианта.

а если подсчитать длину долго (например, нужно пройти по всему массиву), а вот найти точку где длина(х1) == длина(у1) можно быстро (например бинарным поиском — такова специфика задачи) ?

Исходная версия www_linux_org_ru, :

Если «длина(х) == длина(у1) + длина(у2)» - инвариант алгоритма, в котором эта функция используется,

да

не выставлять эту функцию во внешний интерфейс и паниковать при нарушении инварианта.

это как «не выставлять»? допустим, у нас несколько алгоритмов, которым нужна эта функций, причем их могут добавлять совершенно посторонние люди (которые в курсе про инвариант из доков)

и паниковать при нарушении инварианта.

а если подсчитать длину долго (например, нужно пройти по всему массиву), а вот найти точку где длина(х1) == длина(у1) можно быстро (например бинарным поиском — такова специфика задачи)