Як мені зайнятися виправленням коду у менш досвідченого програміста?


19

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

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

Наступна частина цього проекту розпочалася, над якою я працюю. Я відкрив інтерфейс, щоб почати з наступних кроків, і негайно наштовхнувся на проблеми (трохи повільно було трохи заниження, помилки в загальних діях тощо). Я заглянув до коду для кількох питань і виявляю O(n^n)дзвінки, які повинні бути O(n), введіть припущення без перевірки помилок (це в Python), посилання на GUI, додані до оригінального коду тощо.

Тепер я, безумовно, хотів би навчити його, що було не так, і як це виправити, але він вже перейшов до свого наступного проекту, і це було кілька тижнів тому. Боюся, що я скажу "Повернись і зроби це правильно!" (за допомогою звичайно) занадто суворо, і у нас все ще є інші проекти, які потрібно тим часом завершити. Чи варто просто зараз виправити код і спробувати спіймати речі в майбутньому?


4
В майбутньому, чи є можливість погодитись із правилами кодування, які б запобігли помилкам, як ви описали?
Бенні

5
Добре, що ти не відразу біжиш до керівництва і кажеш про нього. Деякі компанії винні. Перевіряючи виправлення, знайдіть спосіб згрупувати їх разом, а потім цей хлопець перегляне їх. З іншого боку, навіть свіжий випускник не повинен кодувати нічого, що є, O(n^n)якщо тільки немає іншого способу. Якщо вони так, то, ймовірно, вони отримали C в алгоритмах або не взяли його або мали шаленого вчителя. Використовувати якийсь інструмент, який допоможе знайти загальні проблеми, було б непогано. Можливо, як наступне завдання цей хлопець може написати кілька тестів на продуктивність?
Робота

О (n ^ n) без документації щодо того, чому просто неправильно, періодично. Якщо вам це справді доводиться робити, коментарі краще поясніть, чому.
Лорен Печтел

Я збирався написати, що "ей, О (п * п) - це не так вже й погано, багато програм вимагає цього ...", але тоді я зрозумів, що це не знак множення, а вбивця ^!
Макс

O (n ^ n) може бути на величину швидше, ніж O (n), якщо O (n) має величезну постійну, а n - мала. codinghorror.com/blog/2007/09/… Знову ж таки, n ^ n є крайнім: D
Coder

Відповіді:


33

Начебто запровадження якоїсь політики перегляду коду може бути корисним на кількох рівнях. Деякі негайні переваги:

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

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


3
Огляд коду +1 - це відмінний спосіб зробити це. Я б запропонував це більше сформулювати фразу "Чи не заперечуєте ви подивитись на зміни, які я вніс, щоб переконатися, що я щось не пропустив", а не "Ось як я покращив ваш код".
Стів Джексон

1
+1 Я б сказав, що огляд коду набагато краще підходить, ніж будь-які "золоті правила кодування правил". Не багато речей ніколи не в порядку.
Макс

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

1
Насправді є хороший і розважальний папір з деякими основами, доступними на сайті mumak.net/stuff/your-code-sucks.html . Здебільшого мова йде про поведінкові прийоми для проведення оглядів в конструктивний спосіб, що надзвичайно важливо для успішних оглядів.
нітіни

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

5

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

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


2

Чи можемо ми зробити висновок, що проект "працює" і був зроблений у розумний проміжок часу (хоча і з деякими кричущими, але виправними проблемами дизайну)? Якщо так, то він у набагато кращій формі, ніж багато проектів, які я бачив за ці роки.

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

Добре, що ви чутливі до того, що ви "занадто суворі", і я думаю, що ви пам’ятаєте, що огляд коду не повинен бути деморалізуючим гарячим сидінням, де молодші люди отримують гриль та ретельну перевірку. Це також може бути способом для старших розробників продемонструвати добрі практики та всім завоювати довіру один до одного, бути ввічливими та доброзичливими навіть за наявності "помилок".

Люди добре навчаються, коли бачать, як виглядає справді хороший матеріал. Це краще, ніж систематично вказувати на кожен невеликий недолік. Однак O (n ^ n) слід обережно і конструктивно вказати.


0

Поділіться своїми знаннями.

Я б запропонував йому допомогу в його новому проекті в обмін на деякі вчення від старшого до молодшого.

Чому б не парувати програмування на обох проектах?

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