14 июля 2010 г.

Когда (0 + x) * 1 != x, и как этим пользуются

Сегодня Саша Устинов рассказал мне, как забавно решилась очередная проблема импорта данных из старых .DBF-источников через Data Transformation Services (не важно, что это - читайте дальше):
Попробовали "затянуть" колонку, как есть - не вышло, так как тип возвращаемого значения не всегда совпадает с ожидаемым. Вероятно, какой-то баг в датаридере... Вспомнил, что дабы привести число к целому типу в VB, можно просто прибавить к нему 0. Сделал, запустил импорт - все отработало, но 1 запись не импортировалась. Починил и это, добавив еще и умножение на 1 :)
Я почему-то сразу очень живо вообразил такой вот код:
var target = (0 + source) * 1 ` Дружище, поверь, так надо...
Смешно, конечно, но на самом деле такие решения весьма и весьма часто используются, если речь идет о legacy-коде. Разбираться, какие там баги в датаридере .DBF-ов - просто некогда, да и информации о них почти нет, т.к. появилось все это добро еще на заре Интернета, а самому формату - вообще миллион лет.

P.S. Пересказ - по памяти, так что могут быть терминологические ошибки. Сам я очень давно не имел дело с VB.

1 комментарий:

  1. в js приблизительно также часто ешаются спорные вопросы, не говоря уже о верстке в ie6 :D

    zoom: 1 чатсо лечит плавающие блоки, которые встали не на свои места по причине ... пытался вспомнить причину, не осилил, видимо это к лучшему, потому что даже верстка под этот ад уже забывается. наконец то мы движемся вперед :)

    ОтветитьУдалить