Якщо ви покращуєте якість коду, працюючи над відділенням функцій


11

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

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

Однак, якщо я працюю над гілкою функцій і помічаю якийсь потворний код, чи варто це виправити?

Схоже, існує ряд нижніх сторін, щоб виправити це:

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

З іншого боку, якщо я цього не роблю, доки я перебуваю у файлі, явно забуду зробити це через пару днів, коли зливаю гілку.

Мене попередили, що це ґрунтується на думці (я думаю, що просто факт, що назва включає should), але я відчуваю, що є відповідь (звичайно, люди використовують обидва ці підходи, тому вони повинні мати відповідь). Також питання щодо development methodologiesтеми є, і я думаю, що вони потребують певної думки.



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

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

Відповіді:


8

Код слід "виправити" у гілці функцій, лише якщо ви все-таки змінюєте цей фрагмент коду як частину функції.

Напр. Я працюю над функцією "друкувати кроликів" і знаходжу код принтера

Public class Printer(string type)
{
    If(type=="bunnies")
    {
        //print a bunny
    }
.....
}

Я змінюю його на:

Public class Printer(string type)
{
     PrintFunctionDictionary[type].Print();
}

Чому:

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

Я випадково не потрапляю на якусь іншу частину кодової бази та "покращую її", оскільки це:

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

1
Я погоджуюсь, що це добре спробувати, і в ідеальному світі це завжди працювало б. Однак у реальному коді ситуації часто бувають складнішими: під час роботи над функцією зазвичай можна знайти частини коду, які, можливо, варто переробити незалежно від функції. Цей код може перешкоджати реалізації функції, але не обмежуватися методами чи класами, що мають безпосереднє відношення до функції. І зміна не обов'язково турбує інших.
Док Браун

1
добре, ви завжди можете зробити окрему гілку рефакторингу. Як я бачу, хоча гілки функцій - це головна річ управління проектами, яка дозволяє вам перейти "функцію X не закінчено, але ми можемо випустити разом з усіма іншими" і "функція X випущена", тому ми не очікуємо зміни функції Y. Додавши рефакторинг до функції, ви потенційно зламаєте ці переваги
Еван

5

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

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


3

Призначення branchтипів полягає у наданні наміру поводження з ними. Якщо ви прямуєте стиль GitFlow розгалуження, то ви , ймовірно , є тип людей feature, hotfix, releaseі т.д .. У випадку художнього відділення, його намір полягає в інкапсуляції злиття в іншу гілку (тобто develop) , який показує , розробник відповідає за злиття, що ця особливість є. Якщо код, який ви очищаєте, не є частиною цієї функції, не змінюйте його.

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

Ось досить вдале пояснення різних стратегій: https://www.atlassian.com/git/tutorials/comparing-workflows/


0

якщо я працюю над гілкою функцій, і я помічаю якийсь потворний код, чи потрібно це виправити?

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

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

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

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