Як ви маєте справу з навмисно поганим кодом?


21

Існує багато історій про навмисно поганий код не тільки на TheDailyWTF, але і на SO. Типові випадки включають:

  • Маючи марну конструкцію, що витрачає час (наприклад, порожній цикл, який враховує деяке величезне значення), тому програмісти можуть легко "пришвидшити" додаток, видаливши його, коли їм доручено.
  • Надання навмисно оманливої, неправильної або відсутньої документації для створення дорогих запитів на підтримку.
  • Легко генерувати помилки, або ще гірше, генеруючи, навіть якщо все працювало нормально, замикаючи програму, тому для розблокування потрібен дорогий дзвінок підтримки.

Ці точки проявляють більш-менш зловмисне ставлення (навіть якщо іноді випадково), особливо перший момент трапляється досить часто.

Як слід поводитися з такими конструкціями? Ігнорувати проблему чи просто видалити код, що порушує право? Повідомити свого керівника чи поговорити з людиною, яка ввела "функцію"?


10
Це "іноді випадково" чи це "навмисно погано"? Я не бачу, як це може бути і тим, і іншим.

Відповіді:


7

Більшість поганих кодів пов'язана з нерозумінням, а рішення - освіта.

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

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

Доставка важливіша за досконалість вежі зі слонової кістки, але варто звернутись на два моменти. Виправлення очевидних недоліків дає вам 80% результатів за допомогою 20% зусиль, і такий вид низько висячих фруктів рідко варто ігнорувати. Але що ще важливіше, якщо ви не звертаєтесь до основної (політичної) причини, швидше за все, навмисне буде записаний поганий код і викличе подальші проблеми - і, можливо, запобіжить доставку.


28

Я ніколи (за 20-ти років) не зустрічав навмисно поганий код, але приклади, які ви цитуєте, здаються мені (принаймні, але IANAL) спробами обману або роботодавця, або замовника, тому ви, мабуть, маєте юридичну силу зобов'язання вказати на це вашому менеджеру.


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

8
Навіть якщо це не законно, принаймні є етичний обов'язок.
Кріс Фармер

@ChrisFarmer Ви не можете відокремити етичні зобов’язання від ширшого контексту - є деякі контексти, коли свідомо поганий кодекс представляє законний колективний опір, економічний чи політичний. (І трудовий договір заслуговує на добросовісне виконання лише тоді, коли відносини, які він формалізує, не експлуатують індивідуально чи структурно.)
user234461

11

Залежить від культури компанії. Частіше за все, це просто не ваша робота, щоб виправити та очистити весь поганий код.

З кодерів на роботі , думка Джеймі Завінського про переобладнання, яке також можна застосувати в цій ситуації:

Зрештою, відправте ебану річ! Чудово переписати свій код і зробити його більш чистим, а до третього разу він буде справді гарним. Але це не сенс - ви тут не для того, щоб написати код; ти тут, щоб відправляти товари.

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

Також дивіться пост Джоела Спольського: Програміст стрічки


+1 Я дійсно шанувальник концепції доставки товарів. Я думаю, що занадто багато технічних профілів просто не вистачає цієї концепції.

+1 мені теж. Занадто багато "чистого коду" -типи книг тощо, які підтримують перекошений погляд на те, що важливо. Якість коду є лише таким важливим. Переможці - не ті, хто має найкращий продукт. Це ті, хто має достатньо хороший товар, доставлений досить швидко.
Joonas Pulakaka

4
Я думаю, ви пропустили пункт у питанні - хлопець розповів про навмисно поганий код, а не просто про код, який написали погані програмісти.
Хіла

@Hila Я вважаю, що моя думка все ще дотримується того, чи був поганий код навмисним чи ні. Якщо це не питання, яке було присвоєно списку проектів / завдань, це не відповідальність програміста-стрічки за виправлення та очищення всього поганого коду . Культура там не академічна і писати чистий / красивий код. Йдеться про доставку та підтримку товару / бізнесу. Я особисто хотів би виправити весь поганий код, на який я стикався, але я не можу присвятити 100% свого часу цьому - я просто ніколи не зможу закінчити завдання / проект, призначений мені тоді.
губка

3
@sunpech Але очищення навмисно поганого коду - це не те саме, що чистка будь-якого коду. Справа не в тому, щоб зробити вашу заявку більш "красивою", а в тому, щоб виправити шкідливий код, який був поставлений туди спеціально. Це як сказати, що лікар не повинен виймати ножиці, коли колега забув у пацієнта, тому що кардіоторакальна операція стосується врятування життя, а не про те, наскільки гарні шви.
Хіла

4

Таке ставлення є симптомом чогось гіршого.

  • Чи стимулює керівництво конкуренцію розробників?

  • Де командний дух?

  • Чи покладаються завдання хтось інший, ніж сама команда?

  • ...

У будь-якому випадку видалення коду, що порушує, недостатньо. Скарги на свого менеджера, безумовно, не допоможуть покращити командний дух.

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

У більшості випадків ця конструктивна поведінка поставила світлу справжню проблему (гіршу), і тоді можна працювати над нею.

Якщо це дійсно не працює. Видаліть розробника з команди.


4

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


2

Як слід поводитися з такими конструкціями? Ігнорувати проблему чи просто видалити код, що порушує право? Повідомити свого керівника чи поговорити з людиною, яка ввела "функцію"?

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

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

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

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

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