Здравствуйте, Константин Ленин, Вы писали:
КЛ>Без автоинкремента фича саморегистрации бесполезна и даже опасна. Когда коды расбросаны по всему проекту и ты должен, как тут уже говорили, искать свободный ID...Тем более это хорошо, что ты вставляешь в мап insert'ом, если бы кто-нить вставлял operator[]'ом, можно было бы таких багов насажать с одинаковыми ID...
Абсолютно не согласен со всеми кто писал про автоинкремент идентификаторов. Либо вы чего-то не понимаете, либо я чего-то не понимаю.
Во-первых, для меня вообще туманно реальное использование этой фичи (приведите примеры).
С автоинкрементом: идентификаторы не постоянны, не известны, их нельзя никуда отправлять/принимать/хранить в постоянной памяти. Я вижу единственныую возможность их использовать: это пересылать объект из одной части программы в другую в сериализованном виде. Зачем это нужно? Можно передать сам объект.
Во-вторых, в инфрастуктуру вполне намеренно встроена проверка, которая выявит дублирование при первом запуске. Это сделано совсем не случайно и убирать это нельзя. Ну кто сделает без проверки, то сам молодец.
В-третьих, я уже тут писал, что во всех случаях, когда я использовал фабрики, ручное присвоение идентификаторов не просто можно, но и
нужно. Ну просто без него нельзя.
Например: я парсю XML и пишу класс именно для элемента "person". Ну какое тут автоприсвоение идентификаторов?
Уже давно в БД используется формат данных, при котором если в поле XXX, лежит значение YYY, то это соответствует определённому классу. Ну какое тут автоприсвоение идентификаторов?
Если я поддерживаю какой-то протокол и в нём прописано, что пакету с таким-то типом соответствует код 47. Ну какое тут автоприсвоение идентификаторов?
Объясни мне ход мыслей, который приводит вас к мысли об автоприсвоении идентификаторов. Может я чего-то не понимаю.