LINUX.ORG.RU

История изменений

Исправление necromant, (текущая версия) :

Вот топ ошибок, которые встретились на моем пути:

  1. Грязный Гарри (ГГ) сделал класс Currency внутри хранились long int value центов. Он сделал метод getCents() через остаток от деления и сделал его мутабельным! Если изначально сумма была отрицательной, то после вызова этого метода становилась положительной! Интересные спецэффект правда? Человеку повезло, что находился в восьми часовых поясах от меня - так бы дождался канделябром по голове.

  2. Тоже код от ГГ - Win32 API, сохранял указатель на элемент вектора и почему-то рассчитывал на определенный порядок прихода сообщений от ОС. После изменения вектора естественно приложение падало.

  3. С++ Builder проект - передача int32 в хранимую процедуру БД. В базу приходили корёженные значения. Оказалось в хранимке был SMALLINT - int16 для этого поля.

  4. Не баг, но поучительно. Меня в свое время покусал Александреску и я наметапрограммировал не приходя в сознание систему обработки лицензий. В бинарник шла только функциональность покрытая лицензией. Кода было немного и всё без комментариев. Вообщем пришел через полгода напарник и сказал, что не осилил мой код. Я потом сам не осилил :) - только на следующий день восстановил в памяти, что там и как. По итогу переписали это все так, чтобы обычный миддл мог менять код. С тех пор стараюсь не переусложнять, а писать попроще.

Исходная версия necromant, :

Вот топ ошибок, которые встретились на моем пути:

  1. Грязный Гарри (ГГ) сделал класс Currency внутри хранились long int value центов. Он сделал метод getCents() через остаток от деления и сделал его мутабельным! Если изначально сумма была отрицательной, то после вызова этого метода становилась положительной! Интересные спецэффект правда? Человеку повезло, что находился в восьми часовых поясах от меня - так бы дождался канделябром от меня.

  2. Тоже код от ГГ - Win32 API, сохранял указатель на элемент вектора и почему-то рассчитывал на определенный порядок прихода сообщений от ОС. После изменения вектора естественно приложение падало.

  3. С++ Builder проект - передача int32 в хранимую процедуру БД. В базу приходили корёженные значения. Оказалось в хранимке был SMALLINT - int16 для этого поля.

  4. Не баг, но поучительно. Меня в свое время покусал Александреску и я наметапрограммировал не приходя в сознание систему обработки лицензий. В бинарник шла только функциональность покрытая лицензией. Кода было немного и всё без комментариев. Вообщем пришел через полгода напарник и сказал, что не осилил мой код. Я потом сам не осилил :) - только на следующий день восстановил в памяти, что там и как. По итогу переписали это все так, чтобы обычный миддл мог менять код. С тех пор стараюсь не переусложнять, а писать попроще.