Для начала, что такое критерии:
Критерии, это признаки, по которым наблюдаемый объект можно отнести к тому или иному классу.
Критерии проектирования - это признаки, по которым можно судить проводилось ли проектирование ВООБЩЕ. Проблема в том, что использующийся в ОО программировании метод проектирования OOA&D уже удовлетворяет большинству критериев, так как подразумевает разбиение на классы, объединение классов в пакеты. Понятность достигается правильным названием и описанием, а непрерывность обеспечивается наличием классов. Проблемы с защищённостью решаются наличием исключений.
Почему так получилось? А потому, что этот метод СПЕЦИАЛЬНО так разработали, чтобы АВТОМАТИЧЕСКИ удовлетворять критериям.
С правилами всё интереснее:
ПРЯМОЕ ОТОБРАЖЕНИЕ - все сущности, модели которых были построены при анализе предметной области ОБЯЗАНЫ войти в виде классов. Пример+, пользователь, вводящий данные, представлен классом UserInput, весь ввод идёт только через него. Пример-, ввод данных для каждой из форм интерфейса выполнен независимо друг от друга.
МИНИМУМ ИНТЕРФЕЙСОВ - основные действия должны осуществляться внутри класса, сократить количество публичных методов классов до необходимого минимума. Пример+ не допускать такого для списка: вызвать Init - для создания, потом SetSize(size) для установки числа элементов, нужно Init(size). Пример- наличие "библиотечных" классов алгоритмов, которые вызываются кем угодно и когда угодно для выполнения сортировок, итераций и т. п.
СЛАБАЯ СВЯЗНОСТЬ - минимизировать ОБЪЁМ передаваемых данных, сократить количество параметров методов. Пример+ метод с 15 параметрами смотрится очень интересно, но лучше вместо него создать класс, который может содержать несколько методов для работы с этими данными, вместо одного сложного. Пример- не всегда есть необходимость в объединении параметров, функция printf работает нормально при любом количестве параметров.
ЯВНАЯ ИНТЕРПРЕТАЦИЯ - не должно быть скрытого взаимодействия между классами. Пример+ использование глобальных данных очень удобно, но отследить, кто их поменял, потребует усилий. Пример- совместная работа над ОДНИМИ данными - основной принцип многопоточного программирования.
СОКРЫТИЕ ИНФОРМАЦИИ - это основа ОО программирования, public и private - просто есть в любом классе.
ЗЫ
Примеры СПЕЦИАЛЬНО подбирались так, чтобы ни на одной стороне не было перевеса.