В ідеальному світі весь код, написаний даним розробником, буде добре задокументований, добре структурований і зрозуміло випробуваний, як з автоматичними інструментами, такими як тести одиниць, так і з використанням сценаріїв справи, через які користувач проходить, щоб перевірити, чи отримаєте ви очікуваний результат.
Однак перше, що ти дізнаєшся, це те, що ми не живемо в ідеальному світі!
Дуже багато розробників не документують свій код належним чином, якщо вони взагалі змішують бізнес-логіку з незв’язаним кодом, і єдиний тест, який вони роблять, - це швидкий аналіз того, що, на їхню думку, є звичайним випадком використання.
Працюючи з таким кодом, перше, що вам потрібно зробити, це встановити, що він має на увазі робити. Якщо є коментарі, вони можуть дати вам підказки, але на це не розраховуйте. З мого досвіду, що багато кодерів не дуже добре пояснюють себе, і навіть якщо вони залишають коментарі, вони можуть бути безглуздими. Однак, якщо ви не єдиний кодер в компанії, хтось, безумовно, повинен мати принаймні базове уявлення про те, для чого призначений код і що він має робити. Спитайте!
Якщо у вас є одиничні тести, то вони значно полегшать ваше життя. Якщо ви цього не зробите, частина вивчення кодової бази може включати в себе тести написання одиниць для вже наявного коду. Зазвичай це не вважається хорошою практикою, тому що якщо ви пишете одиничні тести, що відповідають наявному коду, ви закінчите одиничні тести, які вважають, що код працює таким, як є (вони будуть записані, щоб припустити, що поведінка, яка насправді є помилкою, є правильно), але принаймні це дає вам базову лінію. Якщо згодом ви виявите, що деяка поведінка, яку ви вважали правильною, насправді неправильна, ви можете змінити тест одиниці, щоб перевірити, на що очікуваний результат, а не на результат, який дає код зараз. Після того, як у вас є одиничний тест, ви можете внести зміни та оцінити, які побічні ефекти мають усі ваші зміни.
Нарешті, найкращий ресурс, який ви маєте при роботі з незадокументованим фрагментом коду, - це запитати кінцевих користувачів. Вони можуть нічого не знати про код, але вони знають, що вони хочуть робити. Збір вимог - це перший етап у будь-якому проекті, а розмова з потенційними користувачами системи, яка розробляється, завжди є важливою частиною цього. Просто подумайте про це як проходження етапу збору вимог для нового проекту, який, здається, вже був побудований.
Майте на увазі, що навіть добре написаний і добре задокументований код може бути важким для розуміння стороннім. Код - це, по суті, вираження того, як людина, яка його написала, в той час думала, і кожен має свій унікальний процес мислення. Вам доведеться навчитися бути трохи терплячим і бути детективом. Бути в змозі потрапити в процес мислення іншої людини важко, але програміст, який займається підтримкою існуючого коду, є важливим вмінням. Оскільки більша частина кодування (близько 70%) пов'язана із підтримкою існуючого коду, важливо навчитися.
О, і тепер, коли ви побачили біль, яку може заподіяти погано задокументований, неперевірений і змішаний код, ви не зробите цього наступному поганому розробнику, чи не так? :) Вчіться на помилках попередника, коментуйте свій код, переконайтеся, що кожен модуль несе чітко визначену відповідальність, на яку він дотримується, і переконайтеся, що у вас є вичерпний набір одиничних тестів, які ви або спочатку пишете (для методологій TDD) або принаймні поряд з кодом, який розробляється.