Автоматичні генератори коду [закрито]


13

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

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

Відповіді:


10

Давайте перефразуємо це:

Чи варта вартість хорошого автоматичного генератора коду?

Так.

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

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


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

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

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

5
Хіла, ви ніколи не повинні підтримувати згенерований код вручну, але коли настає день, коли вам потрібно змінити цей код через нові / зміни вимог, код повинен бути зрозумілим і зрозумілим, щоб ви могли легко внести необхідні зміни в генератор , а потім знову генерувати.
Carson63000

6
Згенерований код не повинен бути достатньо для обслуговування, але він повинен бути достатньо зрозумілим для налагодження та перевірки.
Хупернікетес

23

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

Аналогія: хоча процесор мого комп'ютера завжди виконує машинний код, мені не потрібно нічого про це знати, доки я знаю, як створити цей машинний код за допомогою мови високого рівня та компілятора. Я чув, що GCC інколи виробляє машинний код підрозділу, але кого це цікавить, якщо він ідеально працює. Шари абстракції бази даних створюють SQL для роботи з двигуном БД, але кого цікавить, як виглядає цей SQL, доки рівень абстракції чіткий і працює?

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


4
Проблема потім стає, лише одна людина має інструмент, ніхто більше не робить, і тому доводиться вручну підтримувати код.
Буркотить

Це передача долара. Як розробники програмного забезпечення, наш бізнес - це код - незалежно від того, як ми його виробляємо.
Стівен Еверс

12
@David, якщо інструмент має лише одна людина, ви не повинні використовувати його для проекту, в якому беруть участь більше однієї людини.
Метт Оленик

2
@Matt, точно. Генератори є частиною проекту (порівнянні зі сценаріями побудови) і повинні зберігатися в контролі версій або подібному центральному сховищі.
Joonas Pulakaka

2
@SnOrfus: Я думаю, що наша справа полягає у виробництві діючих продуктів, які люди бажають використовувати та купувати. Ось звідки береться наша зарплата. Код - просто носій.
Joonas Pulakaka

6

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

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

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

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


3

З коментарів до інших відповідей, схоже, ви питаєте про стандарти команди, а не про генератори коду.

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

Exe, що робить це, перевіряється на SVN як частину проекту, щоб новий член команди міг отримати новий проект від svn та негайно створити його, не маючи зрозуміти, звідки беруться всі ці класи бази даних (у цьому прикладі ми навіть не включайте згенерований код у svn).

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