Що робити, якщо колега редагує ваш код лише для зміни зовнішності?


16

Що робити, якщо колега редагує ваш код?

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


9
Я припускаю, що у вас є проблема з цим. Якщо так, то чому? Чи робить це код гіршим ?
Заз

3
@Josh: Так, це насправді робить код гіршим, оскільки його важче підтримувати інший програміст, ніж хлопець, який його написав.
Роберт Коритник

4
дайте йому більше роботи
Оскар Кабреро

4
@Robert - Я думаю, що ти сумуєш за точкою Джоша. Зміна зовнішнього вигляду коду може об'єктивно полегшити його підтримку ... особливо, якщо він був погано відформатований для початку.
Stephen C

4
Це справді ваш код, чи він належить до команди?
Ерік Кінг

Відповіді:


28

Поговоріть з ними про це. Зайдіть у розмову зі ставленням: "Вони не роблять цього, щоб мене дратувати або тому, що у них є якась форма обсесивно-компульсивного розладу; вони намагаються вдосконалити мій код".

Тому що ти можеш помилитися. Це може бути витончене виправлення помилок, і ви його просто не помітили.

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

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

Але ти ніколи не дізнаєшся, якщо не запитаєш.


17
Варто зазначити, що багато IDE мають функції автоматичного форматування. Я користуюся ними весь час, не замислюючись над цим. Деякі навіть відформатуватимуть усі файли у вашому проекті чи всі відкриті вами файли, залежно від налаштування. Це може бути легко випадково автоматичного форматування.
Метт Оленик

@Matt: Відмінний момент.
BlairHippo

1
"Вони не роблять цього ... тому що мають певну форму обсесивно-компульсивного розладу;" Якщо говорити насамперед про себе, то це не завжди так! Що стосується коду, я дві речі: перфекціоніст і акуратний виродник. Незважаючи на це, я взагалі прагну уникати застосування цього менталітету на роботі своїх колег.
Натан Тейлор

5
О, я не кажу, що колега Тома - це не чіткий урод OCD з поганим почуттям меж. Я просто кажу, що вступаю в розмову з думкою про те, "Що з тобою, чорт, помиляється ?!" це не гарний спосіб вести продуктивну розмову. :-)
BlairHippo

1
@Chris не потрібно турбуватися про виправдання, я завжди Ctrl + K + D!
Натан Тейлор

16

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

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

Якщо все інше не вдалося, скасуйте реєстрацію. ;)

Редагувати: все ставки виключаються, якщо бажання зробити косметичні зміни ввели помилку.


9

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

Якщо ви не використовуєте стандарт кодування, то весь аргумент того, що становить "хороший код", стає занадто суб'єктивним. Отже, чому вам слід використовувати стандарт кодування :)


8

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

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

Так, я міг би залишити це в спокої, але я би скоріше зменшив розумові зусилля, необхідні для читання коду.

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


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

6

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


"Або вони мають ОКР і можуть знадобитися ліки". - найкраще не згадувати цю частину, якщо ви хочете залишатися дружніми
Заз

Я внесу поправку.
JeffO

5

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


5

IDE, як Visual Studio, має назву, Format Documentяка буде форматувати код відповідно до правил, встановлених користувачем у IDE. Можливо, ваш співробітник використовує це (або автоматично, не знаючи, або шляхом навмисного застосування). Можливо, їх IDE використовує пробіли замість вкладок, або навпаки, і вони застосовуються автоматично, навіть не знаючи? Але вам потрібно поговорити з ними, щоб дізнатися.

До речі, я часто переформатую код колег, якщо він, очевидно, не дотримується якоїсь схеми форматування (тобто він є повсюдно). Це, сподіваємось, тонкий спосіб зробити їх помітними. (Однак я б не переформатував його, якби він був акуратним, але не на свій смак).


1
"(Однак я б не переформатував це, якби він був акуратним, але не на свій смак)" - дуже важливе правило, яке слід дотримуватися, +1
Заз

Наші вказівки щодо розробки, як правило, більше ставлять стиль коду в "рекомендованому" куті. Я автоматично відформатую код у відповідності до рекомендацій на рівні файлів, якщо мені важко читати.
Joeri Sebrechts

3

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

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

... У вашій команді є набір стандартів форматування коду, якими користуються всі, чи не так?


2

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

Звичайно, це випадкова робота, оскільки вона порушила функцію "вини" у SVN.

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


2

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


1

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

int myFunction( ) {

    int i ;
  return  0;

}

стати

int myFunction() {
    int i;
    return 0;
}

так ... чи слід мене покарати через свою дію? У реальному житті я фактично маю тони журналів SVN, які читають "Форматування". ;-)


0

Використовуйте інструмент перевірки стилю

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

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


Я повинен проголосувати за це. StyleCop - жахлива реалізація гідної ідеї. 1) Він працює після складання, що робить його головним вбивцею у великих проектах 2) Це правила за замовчуванням насправді суперечать за замовчуванням VS в деяких випадках 3) Деякі правила є абсолютно неприйнятними. Він скаржиться на "//" без пробілу, а потім говорить вам використовувати "////" Знову після збірки. Це найгірша частина. Це було б не погано, але частина після складання дійсно вбиває вас у великому проекті з тривалим часом складання.
МВС

Я б не погоджувався з вами у багатьох аспектах, які ви вказали. Ви можете налаштувати спосіб роботи перевірки стилю. Я навіть реалізував пару моїх власних правил, які надають потрібне форматування. Щодо швидкості, то не можу сказати, що вона чудова. але на гідній машині це повинно працювати чудово. Подумайте лише про швидкість копіювання C ++ на початку 90-х, куди ви насправді змогли поїхати і тим часом приготувати чашку чаю. Поки ваша збірка не вдалася !!!!!! ;)
Роберт Коритник

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

+1 Це явно не стосується StyleCop .. (StyleCop або подібного ). І це дуже гарна ідея. Визначте набір правил, налаштуйте свій інструмент на вибір і виконайте з ним назавжди.
Bruno Schäpper

У наші дні у нас є Grunt, Gulp тощо, які можуть зробити цей крок так, як це робив StyleCop в минулому.
Роберт Коритник

0

це думка, яку я бачив в Інтернеті, розмовляючи про рефакторинг, і, можливо, пояснюю, чому хтось торкнеться вашого коду, щоб зробити це краще:

Чому?

Існує дві основні причини рефактора:

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

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

Коли?

  1. Чим швидше, тим краще.

  2. швидше і менш ризиковано перетворювати рефактор на нещодавно реконструйований код, а не чекати, коли рефактор буде майже завершеним.

Що?

  1. Весь код і вся конструкція є кандидатами на рефакторинг.

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

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

ура

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