Подпишитесь на обновления блога. Введите ваш e-mail:

Вход в систему

Как разобраться в незнакомом коде

Часто перед программистом встает задача доработать функционал какого-нибудь уже существующего проекта.
Попробую дать несколько советов, которые помогут быстрее освоиться в незнакомом коде и быстро находить нужные файлы и функции.

Наиболее распространенная задача – исправление одного из модулей (одной из функций), либо необходимость создать собственный модуль (функцию).

Во-первых – не пытайтесь разобраться в том, как полностью функционирует весь проект.

Рассмотрим задачу – нужно исправить внешний вид и суть выводимой в одной из областей сайта информации.

Часто еще не опытные программисты начинают анализ кода сверху-вниз, т.е. рассматривают точку входа в проект (для сайтов это index.php), пытаются проанализировать шаг за шагом ход выполнения программы и на одном из шагов предполагают найти вызов искомой функции.
Проблема такого подхода очевидна – прежде чем вы найдете нужную вам функцию, велика вероятность утонуть в массе подключаемых файлов (а ведь искомая функция может оказаться в любом из сотен файлов проекта), вы запутаетесь в логике работы проекта и потеряете кучу времени.

Решение – анализировать код снизу вверх (либо применять смешанный подход).

Шаг 1. Поиск по уникальным признакам

Первое что следует сделать – это найти некие уникальные html теги, которые присутствуют в блоке, подлежащем исправлению.
Это своего рода приметы, по которым можно найти нужный файл и искомую строку. Как например при поиске человека, если мы НЕ знаем кто он среди сотен людей, но знаем что у него рыжие волосы – это существенно сокращает круг лиц, а если знаем что у него татуировка в виде сердечка на левом бедре – то в итоге безошибочно сможем найти нужного.

Так и с кодом. Если видим в редактируемом блоке какой-то редкий css-класс (например <div class=”main_left_block”>), или лучше id элемента (например <div id=”comment_wrapper”>) – поиск будет успешным.

При этом важно понимать, что многие id и классы элементов формируются программным путем и если вы видите что то вроде <li id=”item_15”>…</li><li id=”item_16”>…</li>.. Логично что эти идентификаторы сформировались программно и поиск среди файлов слова «item_15» ничего не даст.

Для поиска искомого кода среди файлов проекта я применяю текстовый редактор Notepad++. Нужно отметить, что Notepad++ я в принципе использую как основной редактор кода, т.к. в нем есть подсветка синтаксиса чуть ли ни всех языков программирования, куча удобных горячих клавиш и т.д. Но особенно меня радует поиск Notepad++, при помощи которого можно искать текст не только внутри открытых файлов, но и среди всех файлов указанной директории.

Итак, откроем Notepad++, жмем CTRL+F (поиск), переходим во вкладку «Найти в файлах», вводим в поле «Найти» искомую строку (в нашем случае <div class=” main_left_block ”> или просто main_left_block), указываем папку среди файлов которой будет осуществляться поиск, и жмем «Найти все».

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

Шаг 2. Проверка результата поиска

Далее необходимо удостоверится что мы нашли именно тот фрагмент кода. Для этого добавим в код свою фразу, например echo "qweqweqweqweqweqwe";

Если после обновления странички сайта увидим на экране нашу фразу - значит сработал найденный нами кусок кода. Значит мы на правильном пути. Возможно уже на этом этапе будут найдены искомые строки, подлежащие исправлению.

Если же например внутри найденного <div class=” main_left_block ”> содержатся вызов каких-то методов, и вы понимаете что где-то именно в этих методах нужно будет провести исправления, то для их поиска снова применяем глобальный поиск, и теперь ищем по названию метода.

Советы:
- Если код не слишком большой допустимо применять метод поиска сверху вниз. Например, нужно исправить JavaScript функцию, которая вызывается при нажатии на кнопку.
- При нескольких идентичных результатах поиска применяйте технику флагов, т.е. в разных файлах пишите разные сообщения на экран.

Отправить комментарий

Содержимое этого поля является приватным и не будет отображаться публично.
CAPTCHA
Введите код который вы видите на картинке чтобы подтвердить, что вы - человек!