Это зависит от варианта использования. Вы можете или не должны иметь возможность различать сценарии «нет значения» и «нет ключа». Представьте, например, сопоставление между именем пользователя и средним именем. Если ключ присутствует, но значение равно None
, это означает, что у пользователя нет среднего имени. Если ключ отсутствует, то у вас нет записи этого пользователя.
С другой стороны, предположим, что вы указываете номер года на день недели, на который выпадает 29 февраля. В этом случае не обязательно должны отображаться не-високосные годы на карте, и вы можете предположить, что если ключ отсутствует, это связано с тем, что с ним нет никакой ценности.
Семантически эти два решения не эквивалентны. Если вам нужно знать, какие сущности существуют (на основе набора ключей), вам необходимо использовать свое решение. Тем не менее, я по-прежнему буду придерживаться второго подхода (используя простую «карту») и управлять множеством всех entites в другом месте. Затем «Карта» определяет сопоставление между «Entity» и «Value», а если нет сопоставления, то нет причин добавлять «Entity» в качестве ключа в первую очередь. – fxlae
Лично я считаю, что использовать значение Option не имеет смысла (даже если вам нужно иметь дело с дефолтом по умолчанию, вы можете использовать 'withDefaultValue'). Но я должен отметить этот вопрос, поскольку он довольно субъективен. возможно, http://programmers.stackexchange.com/ должно быть лучше –