Я втрачаю інформацію про потік свого веб-додатка PHP, з цим стає важко працювати


14

Я займаюся програмуванням кілька років, і з часом дуже добре ознайомився з C # та JavaScript. У мене є кілька великих проектів на C # та JavaScript, з якими у мене немає проблем із навігацією. Нещодавно я розпочав проект PHP & AngularJS для роботи без попереднього досвіду роботи з PHP.

Потік речей PHP стає важко відстежувати (Сторона JavaScript більша, але її легко обробляти), коли я намагаюся продумати її, я уявляю собі заплутану кульку нитки. Основні помилки в дизайні, які я зробив, коли я почав, починають накопичуватися і впливають на те, що моя конструкція рухається вперед. Для впровадження чого-небудь нового потрібно більше часу.

Я перебуваю в обмеженому терміні, і мені важче і важче написати хороший, DRY, SOLID, код. Копіювати / вставляти шматки коду стає все привабливіше, щоб змінити його поведінку в міру збільшення часу дизайну. Також потрібно тривалий час повертатися в базу коду, коли мені потрібно робити контекстний перемикач (від одного проекту, а потім до цього), коли я повертаюся до роботи над цим проектом, у мене є страх.

Які кроки я можу вжити, щоб виправити це? Додатковий час, який це може зайняти, також має бути виправданим, мій начальник не розробник і не знайомий з життєвими циклами розробки та програмного забезпечення, тому пояснити це може бути складніше, ніж зазвичай.



1
Дякую @gnat Однак мені менш цікаво зробити справу для мого начальника, ніж я вигадую, як реально виправити самі проблеми. Здійснення справи до мого начальника не принесе користі, якщо я не знаю хорошого методичного способу виявлення та зміни проблем.
Дуглас Гаскелл

Відповіді:


11

Ви берете на себе технічну заборгованість. Чим більше ви виправдовуєте неохайний код термінами, тим більше термінів побачить вас все менше і менше.

Зрозумійте, що ви можете повністю піти від цього. Ніхто не збирається зловити вас, роблячи безлад і вибиває вас. Ти просто прокинешся одного дня, оточений безладом.

Після цього ви або оновите своє резюме, і це зробить мою проблему, або ви вирішите погасити борг і витратите деякий час на чистку коду.

Якщо ви перейдете до програми очищення, зрозумійте, що це не про те, щоб "витрачати більше часу на дизайн". Йдеться про те, щоб зламати деякі ліниві звички та вивезти сміття.

Викинути брудний код оптом - погана ідея. Не через роботу, яка ввійшла в неї, а тому, що робочий код захоплює ідею. Перемістіть ідею в чистий код, перш ніж ви сміття забруднити.

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

Не вдавайте жорсткість. Якщо ви не можете її змінити, це не програмне забезпечення.


1
"Ніхто не збирається спіймати вас, роблячи безлад і вибиває вас". ... Якщо ви не зробите перевірку коду. ;)
jpmc26

1
@ jpmc26 Якщо ви думаєте, що огляди коду врятують вас від цієї долі, ви помиляєтесь. Огляди коду допоможуть вам лише тоді, коли ви готові вчитися у інших. Не тоді, коли ви орієнтуєтесь на термін. Працюючи, безладно, код буде козири думки знову і знову. Я бачив, як менеджери вирішують ці суперечки, перегортаючи чверть. Якщо ви не дбаєте про якість, ніхто не зможе витягнути її з вас. Не думайте, що ви можете покластися на інших, щоб утримати вас від безладу. Якщо справа доходить до цього, вони просто призначать вам оновити документацію.
candied_orange

Якщо ви прочитали мій коментар і подумали, що я кажу, що огляди коду є магічними, як єдинороги та веселки, які все виправлять без будь-яких зусиль чи бажання, ви неймовірно помиляєтесь. Але вони дають комусь можливість зателефонувати вам на це.
jpmc26

1
@ jpmc26 Якщо ви прочитали мою відповідь і подумали, що я кажу, що надії просто не здайтеся, ви неймовірно помиляєтесь. Я закликаю програмістів взяти на себе особисту відповідальність за чистий код, а не покладатися на будь-який процес, щоб його здійснити. Тільки одне має значення. Вам або байдуже, або вам це не потрібно.
candied_orange

Звичайно, але навіть найкращий програміст раз у раз прийматиме німі рішення. Огляди коду з іншою людиною дають вам можливість поставити свій код перед кимось іншим, хто може їх зловити раніше. У цьому вся суть . Це важко побачити проблемні місця від себе , поки ви на самому ділі не намагатися змінити що - то і стає важко. Звичайно, огляди коду та будь-яка інша техніка марні, якщо вам все одно.
jpmc26

9

Для впровадження чого-небудь нового потрібно більше часу.

Це ваше виправдання. 'зіпсуйся, з'їж трохи ворон і поясни, чому все триває більше часу і що потрібно витратити трохи часу на рефакторинг + переробку системи.

Якщо цього не зробити, вам доведеться потроху переробляти, знижуючи. Завдання займають уже більше часу, ніж ви хочете, - займіть трохи додаткового часу щоразу, коли торкаєтесь кодової бази, щоб спробувати зробити щось краще. Додайте інтеграційний тест. Витяг абстракції.

Дурна відповідь на тему: "Як мені відтворити величезний проект?" є: "По одній штуці за часом".

EDIT

Читав пов’язані публікації та натрапив на цю публікацію в блозі: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : не намагайтеся створити величезну "фазу" рефактора у вашому проекті; навряд чи вдасться отримати відкуп від власників проекту, і ви не будете керовані у виборі того, з чим братися за час, який у вас є. Натомість знайдіть час для кожної нової зміни чи виправлення, щоб відмити код, з яким ви зараз працюєте. Не дозволяйте запахам прилипати, коли у вас є можливість їх виправити.


3
Саме це я робив зі своїми спадщинами в минулому. Приємна річ: як тільки ви отримаєте переломний момент, проект починає світитися, як з казкового пилу.
qwerty_so

-2

Sonarqube підтримує PHP, щоб ви могли допомогти відстежувати свій поточний борг та нові витоки. http://docs.sonarqube.org/display/PLUG/PHP+Plugin

Зразок в реальному часі з Drupal https://sonarqube.com/dashboard?id=drupal


1
На жаль, я не можу встановити JVM на своєму робочому пристрої. Інакше це виглядає як чудовий інструмент.
Дуглас Гаскелл

Це досить драконічно для робочої станції для розробників.
Архімед Траяно

У мене немає місцевого адміністратора, ані дозволів на встановлення, або запуску дозволів для будь-яких програм, що не перебувають у списку. Раніше було набагато гірше .... сумно.
Дуглас Гаскелл

Не можу сказати, що я співчуваю, але я співчуваю.
Архімед Траяно

тому що це лише реклама або посилання на інструмент, а не відповідь на питання ОП.
Джеймс Снелл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.