Як боротися з філософією повторного використання коду?


10

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

Якою мірою потрібно зробити свій код багаторазовим?
Чи слід обмежувати його на область застосування або потрібно зробити його повторним використання поза проектом?

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


Відповіді:


21

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

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


2
Чи "було" в першому реченні друкарка "має"?

@delnan - що "було"? :-) Дякую, що це зробив.

9

Пам'ятайте про KISS та YAGNI:

Код, re-usability better to be consideredяк тільки будете готові ваш дизайн-документ . Це дозволить вам побачити розділ / частини коду, які потенційно будуть дублюватися.

Таким чином, коли у вас немає чіткого дизайну, тоді застосовуйте підхід KISS та YAGNI у своїй роботі!


1

Це з мого досвіду, але все-таки вважаю, що це може бути застосовано і йде в руслі того, що згадував GlenH7 .

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

  1. Найшвидший метод
    Скопіюйте попередній код з іншого проекту (не маю багато часу) у мій поточний проект.
  2. Другий найшвидший метод
    Скопіюйте попередній код і помістіть його до загальної бібліотеки, а потім включіть цю бібліотеку до поточного проекту (щоб зробити простір вперед).

    2б. Якщо я внесу зміни в інший (оригінальний) проект, я перероблю його для використання нової бібліотеки [але, як правило, цього не робитиму, якщо мені не доведеться повторно торкатися цього проекту].

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


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

@Caleb: Погоджено. Ніколи не говорив, що це елегантно просто, що терміни - це терміни. Під час рефактора я розпізнаю декілька проектів, використовуючи один і той же код, і пройду їх і вийду в їх власні бібліотеки. Але коли мені потрібно дістати його з дверей, копіювальна паста працює. Це також дає мені можливість вносити зміни для цього одного проекту, і я пам'ятаю про ці зміни, коли я вимикаю бібліотеку і хочу зробити її міцною і гнучкою.
Бред Крісті

1

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

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


0

Не перестарайтеся. І якщо ви не впевнені, дотримуйтесь сфери застосування, поки ви не написали достатньо проектів, щоб побачити, де можна повторно використовувати.

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