Ошибка программиста

Не буду томить. Главная ошибка программиста — это выбор профессии 😉

Насколько важны и серьезны ошибки, совершенные программистом? Все-таки мы ведь не хирурги и не судьи. Выходит, они не особо и важны. Да и люди с авторитетным для меня мнением утверждают, что ошибки в программировании не важны, потому что могут быть легко и сравнительно быстро исправлены, что приводит к возможности существования оутсорса на сегодняшнем уровне и огромного количество IT компаний. Лишь потому, что все может быть быстро исправлено. А с другой стороны, меня всегда интересовал процесс написания кода для атомных электростанций(это прослеживается в моих постах). От их кода зависят же далеко не только жизни людей…

Сегодняшний же пост об ошибке во спасение. Заинтриговал??? Я рад!

Вашему покорному слуге выпала возможность поработать на известном во всем мире проекте и даже реализовать для него фичу. Даже, правильнее сказать, Фичу! Имя программного продукта я называть не могу, но могу сказать, что он содержит в себе текстовый редактор кода. Это сторонний компонент, когда-то давно кем-то купленный и ныне он не поддерживается, но он выполняет все свои функции и поэтому не трогается. Я серьезно искал к нему документацию и нашел очень мало. Для меня же этот компонент — набор dll’ек. Благо у нас есть dotFuscator и имена методов очень даже читаемые.

Должен же я был реализовать возможность просмотра свернутых кусков кода при наведении на них мышкой. Все стандартно. Слева нажали на минусик — код свернулся. Нажали еще раз но уже на пюсик — развернулся. Навели мышкой — получили тултип с содержанием свернутого куска. Сворачивалка работала замечательно. А вот тултипы ну сильно хотелось.

Какое самое логичное решение поставленной задачи? Правильно, отловить onMouseHover, определить над каким куском мы находимся, и показать красивый тултип с отформатированным кодом. onMouseHover я отловил, но для редактора! Это не составило особого труда. А вот как определить над каким компонентом мы находимся??? У нас есть только координаты мыши. А из координат мыши вычислить кусок кода ой как проблематично. Ведь мы же не первый день кодим и знаем, что шрифт бывает разный, да и выйдет тут кода достаточно много, бажного кода. А пацаны же все фичи одной строчкой реализовывают 😉

Постепенно изучая компонент, я узнаю, что могу получить доступ ко всем свернутым кускам кода, но у них нету onMouseHover. Дальнейшее изучение приводит к методу, который вызывается при необходимости показать тултип и, в частности, он сообщает к чему мы тултип собрались показать. Нам лишь остается его и сделать. Великолепно, реализовываем тултип. Все работает. Правда, оценка позволяет позаниматься красивостями. Всякими форматирования, выделениями цветом и так далее. И в процессе совершенствования я ошибаюсь и вместо исполнения своего кода просто возвращаю true, и вижу неземной красоты тултипы. Да, они были реализованы в стороннем компоненте и чтобы их включить надо было всего лишь в одном месте вернуть true. Удаляем весь свой код, коммитим одну строчку и фича готова…

Почему они сторонние тултипы неземной красоты? Все просто: разработчики подобного рода компонентов могут себе позволить тратить в разы больше времени на отладку, красивости, стабильность и прочее, чем мы. Не забываем про то, что у нас действует закон про любую ошибку и быстро исправить. В частности, поэтому Джошуа Блох рекомендует не изобретать велосипеды а максимально пользоваться готовым.

Если в Вашем редакторе кода после обновления появятся тутлипы для свернутых кусков кода – пожалуйста 🙂

 

ПОДЕЛИТЬСЯ:

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

  1. Клево…. 🙂 Как будто статью на китайском прочитала. 🙂

Добавить комментарий