Кирилл Данилов (donz_ru) wrote,
Кирилл Данилов
donz_ru

Хотел сделать по-умному, оказалось по-глупому

Всё должно быть сделано настолько простым, насколько это возможно, но не проще...
Альберт Эйнштейн

Написал для себя мидлет, который позволяет логгировать в RecordStore всякую информацию по ходу выполнения основного мидлета из Midlet Suite'а (например, информацию об исключениях) и потом просматривать ее.
Решил сделать все "как надо". А именно использовать RecordComparator для определения, которую запись показывать сначала, то есть которая была сделана раньше, а которая позже.
И вот сидел вчера, втыкал, с чего бы это более поздняя по логике запись (тупо в одном потоке пишется позже) оказывается выше, чем более ранняя. "Нашел" ошибку в синхронизации потока, который пишет в хранилище. Сделал настоящую ошибку. Понял это. Вернул все назад. Начал втыкать опять. Догнал, что время записи, по которому идет сравнение, записывается с точностью до секунды без миллисекунд. Поэтому и получается такая фигня - записи оказываются равнозначными и иногда путаются местами.
А что надо было сделать? А надо было не выпендриваться, а тупо сделать последовательное получение записей через цикл при помощи recordStore.getRecord( int index ). Даже если писать миллисекунды (кстати, здравая идея для тестов производительности), то никакие компараторы нахрен не нужны. Потому что: процесс записи синхронизирован, и первый вызов сделает первую запись; фрагментации записей быть не может - если лог удаляется, то целиком, то есть все хранилище сразу.
В общем, если вдруг на пустом месте посетит мысль забабахать мегакрутую и мегауниверсальную вещь, подумайте, а оно точно надо? Чем сложнее конструкция, тем больше шанс допустит ошибку. Но это, конечно, не значит, что надо создавать топорные негибкие решения.

Tags: it, j2me
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments