Я дуже добре знаю цю ситуацію. Коли я застрягаю таким чином, я намагаюся зайняти різні точки зору на проект.
1.) Точка зору користувача / замовника - використовуйте зворотний зв'язок
На жаль, ми потрапили в наш код таким чином, що ми не можемо бачити свої власні недоліки, оскільки ми використовуємо наші програми так, як ми їх закодували. Подивіться, як користуються цим людьми, і спробуйте розібратися, якими будуть найбільш інтуїтивні вказівки користувача. Пограйте з прототипами інтерфейсу користувача. Це здається цікавим, але якщо ви дізнаєтесь, що вас змусять перекодувати величезні частини вашого коду, просто змінивши логіку використання, ніж настав час розпочати цикл оновлення.
2.) Зробіть функціональний аналіз свого коду та візуалізуйте його
Деякі IDE та фреймворки підштовхують вас, наприклад, до змішування інтерфейсу користувача та додаткового коду. Якщо ви дозволите це статися, ви в один прекрасний день зіткнетеся з ситуацією, що вашу кодову базу навряд чи можна підтримувати через туманні та важко розбити залежності. Особливо змішування коду інтерфейсу з іншим кодом може призвести до коду спагетті та зайвої функціональності. Розділіть свій код на такі функціональні блоки, як, наприклад, класи баз даних, класи зв’язку, класи інтерфейсу, основні класи тощо та вкажіть функціональні блоки, що говорять назви. Потім візуалізуйте функціональність за допомогою графічного інструмента (я використовую інструмент для відображення розуму), щоб з’ясувати, чи ваша структура достатньо логічна та модульна, щоб ви могли повторно використовувати величезні блоки коду для різних проектів і чи зможете ви замінити їх на новіші версії без великий біль.
Найкращий спосіб зробити це з мого досвіду - створити документ, який візуалізує всі залежності між вашими класами та їх дзвінками від вашого коду. Результат - візуалізація дизайну вашого інтерфейсу. Якщо ця карта коду схожа на повний кластер ***, настав час діяти. Якщо цього ще не сталося, вам слід подумати про підходящу конвенцію іменування, яка представляє вашу структуру коду таким чином, що вам не потрібно думати про те, як викликати її і що вона робить.
3.) Використовуйте загальні підходи до забезпечення якості
Моя улюблена - FMEA. З точки зору кодування це означає не тільки проаналізувати те, що пішло не так у минулому, а й подумати про те, що може піти не так. Досить поширеним прикладом є раптово перерване мережеве з'єднання. Після цього ви можете класифікувати умови помилок за такими наслідками, як втрата даних, збій, неправильний розрахунок та судити про вплив на користувача. Якщо цього ще не зроблено, то визначення спрощених класів помилок і винятків та процедур може допомогти вам зберегти чистий і чіткий код. Найкращий спосіб - це втілити їх у кожен новий мирний код, перш ніж навіть починати писати щось інше. (Ну, я винен не завжди сам дотримуватися цієї поради.)
Крім того, це допомогло мені генерувати та часто оновлювати "список пропозицій щодо вдосконалення" для мого власного коду. (Якщо чесно, у моїх проектах ще багато коду, яким я точно не пишаюся.) Я також намагаюся витратити час на збирання та перегляд коду найкращої практики з документації API, конференцій розробників чи журналів розробників.
До цього моменту не потрібно торкатися коду. Це просто про те, щоб дізнатися, що відбувається не так, і знайти спосіб визначити, як поліпшити свій код.
Нарешті кілька порад щодо щоденної роботи зі старого пердета. Намагайтеся уникати кусання більше, ніж можете їсти. Це призводить до занадто великого тиску для чистого кодування. Ви рідко отримуєте час, щоб зробити це правильно, але вам доведеться витратити час, щоб потім виправити недоліки.
Ніщо не є настільки тривалим, як тимчасове рішення, але коли воно порушується, часто запізнюватись вчасно це виправити. Приклади - це неприємні хаки або дивні винятки, які я використовував для того, щоб щось працювати, незважаючи, наприклад, на недолік основної системи чи ОС. І тоді помилка виправляється або нова версія просто скидає API ...
Якщо ви застрягли і змушені знаходити рішення, ніж робити коментарі та робити замітки, які слід час від часу переглядати. Зазвичай ми стаємо все кращими і кращими через те, що дізнаємось щось нове. Якщо ви знайдете кращий спосіб здійснити це якнайшвидше. В іншому випадку ви можете виявити кодування способу вирішення та виключення виключення одного дня. (Хто між вами без гріха, нехай кине на мене перший байт.)