Стандартные имена
Вы уже заметили многократное использование во всей книге нескольких базисных имен, таких как put и item. Они являются важной частью метода.
Большинству классов необходимы компоненты, представляющие операции нескольких базисных видов: вставка, замена, доступ к элементам структуры. Вместо придумывания специальных имен для этих и подобных операций в каждом классе, предпочтительно повсюду применять стандартную терминологию.
Вот каковы основные стандартные имена. Начнем с процедур создания: имя make рекомендуется для наиболее общей процедуры создания и имена вида make_some_qualification, например, make_polar и make_cartesian для классов POINT или COMPLEX.
Для команд наиболее общие имена приведены в таблице:
| extend | Добавить элемент |
| replace | Заменить элемент |
| force | Подобна команде put, но может работать для большего числа случаев. Например для массивов put имеет предусловие, требующее, чтобы индекс не выходил за границы, в то время как force не имеет предусловий и допускает выход за границы |
| remove | Удаляет (не специфицированный) элемент |
| prune | Удаляет специфицированный элемент |
| wipe_out | Удаляет все элементы |
Для небулевых запросов (атрибутов или функций)
| item | Базисный запрос для получения элемента: в классе ARRAY - элемент с заданным индексом; STACK - элемент вершины стека; QUEUE - "старейший" элемент и так далее |
| infix "@" | Синоним item в некоторых случаях, например в классе ARRAY |
| count | Число используемых элементов структуры |
| capacity | Физический размер, распределенный для ограниченной структуры, измеряемый числом потенциальных элементов. Инвариант должен включать 0<count and count <= capacity |
Для булевых запросов стандартными именами являются:
| empty | Содержит ли структура элементы? |
| full | Заполнена ли структура ограниченной емкости элементами? Обычно эквивалент count = capacity |
| has | Присутствует ли заданный элемент в структуре? (Базисный тест проверки членства) |
| extendible | Можно ли добавить элемент? (Может служить предусловием для extend) |
| prunable | Можно ли удалить элемент? (Может служить предусловием для remove и prune) |
| readable | Доступен ли элемент? (Может служить предусловием для remove и item) |
| writable | Можно ли изменить элемент? (Может служить предусловием для extend, replace, put и др.) |