honestas: (Daria)
[personal profile] honestas
  Поразительно, какие только ошибки и проблемы можно найти на свою голову, если не следовать Пути!
  Недавно я ещё раз в этом убедился.

  Есть у меня, о, счастливые други, пара подопечных, что ходят ко мне раза два в неделю, пытаясь поразить своим познанием UML и проектирования, и логикой, и умением красиво сплетать Java-код, и научиться от меня, как следует мыслить и как следует быть программистам. Пришли они как-то раз опечаленные и не было на них лица, а одежды их были грязны, как у людей, пребывающих в великой скорби. И я встал, и взял их за руки и ввёл к себе в кабинет, и усадил на мягкие кресла и всячески утешал их. Но ничто не могло развеселить их. Сказал я тогда им: "О, прошу вас, возлюбленные мои ученики, откройте мне, что так печалит вас?". И отвечали они: "Ах, учитель! Есть у нас в нашей премудрой программе класс, а в классе том определен массив строк. Строки те мы выводим для пользователя, чтобы знал он, что происходит внутри вычислительной машины. Семь строк определили мы, но сколь не ухищрялись, нет нам доступа к седьмой! Весьма ругается JVM на любые наши попытки получить больше, чем шесть строк."
  Открыл я их код и увидел всё так, как они сказали. Но посмотрел я внимательнее - и, о, что я вижу? - определён тот массив как public String[], и инициализирован он по умолчанию. Сердито посмотрел я тогда на своих учеников и такой вопрос задал им: "Ответьте мне, что заставило вас динамически определять массив, которому не предстоят изменения? Разве праведно вводить в заблуждение Виртуальную Машину и Всевышнего, и копировать ваш массив из объекта в объект, и возможность изменения оставлять ему?" И пали ученики на свои лица и выразили раскаяние. А я взял калам и начертал после слова public слово static. И, умудрён Всевышним, final прибавил следом.
  Взяли же тогда ученики код, и откомпилировали его, и преискусно уложили в jar-файлы премудрой ant-программой. И запустили они свою программу, и произнесли заклинания, понятные и непонятные. И упала программа, как Шайтан, возомнивший себя равным Всевышнему. Взглянул я на стек-трейс тогда, и увидел там ошибки сериализации. "Внемлите - сказал я подопечным, - ибо объект ваш сериализованный шесть строк имел в своём массиве, и шесть строк этих десериализованных возвращались к вам каждый раз. Теперь же, когда изменили мы сигнатуру класса, перестали совпадать идентификаторы версий класса, и не десериализуется он больше". И ещё прибавил им:
Если бы сразу вы шли по Пути,
Сразу бы static массив ваш был,
Никак бы вы в беды уже не попали:
Корректный класс корректно читается.


  И целовали мне ученики руки, и благодарили, и радостен был вид их, и с миром они отошли к себе.
  Но и это не так удивительно, как повесть о cинхронизации и ещё двух моих студентах.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

honestas: (Default)
honestas

May 2015

S M T W T F S
     1 2
34 56 789
1011 121314 1516
17 18192021 2223
2425 262728 2930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 11:58 pm
Powered by Dreamwidth Studios