Говнокод ли это и как бы вы сделали
От: Shmj Ниоткуда  
Дата: 26.05.23 06:51
Оценка:
Решил чисто в образовательных целях немного поработать с C++, уже грызу второй проект, хотя С++ там не единственный — нужно писать и скрипты и обертки на более высокоуровневом языке и пр. Но в общей сложности опыта С++ у меня с пару месяцев чистых уже набралось.

Так вот, какие выводы. Когда 2 месяца поработал с Java после n лет C# — я уже чувствовал себя в своей лодке. А после пары месяцев C++ чувствую себя ну не дураком но полудурком.

Вот, для примера, стала задача такая — доработать JSON-сериализатор. Работает он на макросах — т.е. в желаемый класс для каждого поля нужно добавить типа:

JSON_SERIALIZATION_BEGIN
J_SERIALIZE (my_field)
JSON_SERIALIZATION_END


И этот код добавляет метод save в класс, который тупо сохраняет все поля. Поля должны быть либо примитивными, либо иметь метод save (т.е. внедрение из такого же макроса).

И вот, допустим, потребовалось чтобы оно сохраняло и типы, не являющиеся примитивными и не имеющие save — просто в виде Base64 строки.

Наваял такой код: https://ideone.com/SMqEqB

Чутьем чую запах говнокода, но объяснить не могу. Кто что скажет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.