У програмних компаніях існують різні стандарти кодування, які мають на меті підвищити надійність коду, портативність і, що найголовніше, читабельність у коді, написаному спільно різними розробниками.
Два помітних приклади - MISRA C та стандарт C ++, розроблений для проекту JSF .
Зазвичай вони знаходяться в наступній формі, після ретельного уточнення, що означають слова "повинен", "повинен", "повинен", "міг" тощо:
Приклад:
Правило 50: Змінні з плаваючою точкою не перевіряються на точну рівність або нерівність.
Обґрунтування: Оскільки номери з плаваючою комою підлягають помилкам округлення та укорочення, точної рівності може бути досягнуто навіть тоді, коли очікується.
Ці стандарти кодування створюють обмеження, як правило, щодо коду, який був би законним з точки зору компілятора, але він небезпечний чи нечитабельний, і тому "вважається шкідливим".
Тепер давайте зловживати цим!
Вас приймають як члена невеликого комітету зі стандартизації у вашій компанії, який призначений для розробки нових стандартів кодування, який повинен використовувати кожен розробник компанії. Якщо ви не знаєте інших, ви таємно працюєте в зловісній організації і ставите своєю місією саботувати компанію. Вам потрібно запропонувати одну або кілька записів до стандарту кодування, що згодом перешкоджатиме розробникам. Однак ви повинні бути обережними, щоб не зробити це відразу очевидним, інакше ви ризикуєте його не прийняти до стандарту.
Іншими словами, ви повинні ввести правила до стандарту кодування, які виглядають законними та мають шанси бути прийнятим іншими членами комітету. Після запуску проектів і вкладення в код незліченних кількох годин-годин, ви можете мати можливість зловживати цими правилами (наприклад, технікою або дужедослівне тлумачення), щоб позначити інакше нормальний і якісний код як такий, що суперечить стандарту. Тому вони повинні докласти чимало зусиль, щоб його переробити, і правила будуть перешкоджати їм з цього моменту, але оскільки правила діють досить довго, чистий імпульс збереже ці ролі в живих, і оскільки існують значні конфлікти Інтереси між різними рівнями управління, інші менеджери, ймовірно, зберігатимуть живі правила (було б нерозумно визнати свою помилку!), тому заважаючи компанії! Mwahahahahaaa!
Оцінка балів
Найвища відповідь, яка проголосується, приблизно через 2 тижні від першого виграного результату. У мене є ідея для гарної відповіді, але я опублікую її лише через кілька днів, як хтось інший може прийти до цієї ж ідеї, і я не хочу їх позбавляти від задоволення. Звичайно, моя власна відповідь не буде прийнята вище за будь-яку іншу, незалежно від оцінки.
Виборцям пропонується набирати відповіді, виходячи з того, наскільки добре проробляються лазівки та наскільки вони неприємні для розробників.
Правила і норми
- Правило або правила повинні виглядати професійно написаними, як у наведеному вище прикладі
- Правила повинні виглядати справжніми (тому такі речі, як "усі змінні повинні містити щонайменше одну підкреслення, одну верхню літеру, одну малу літеру та два цифри" , не приймаються. Вони дійсно перешкоджають розробникам, але, швидше за все, не будуть прийняті комітет), і якщо їх заслуга не відразу очевидна, ви повинні дати гарне обгрунтування.
- Ви маєте змогу знайти спосіб використання / зловживання своїми правилами для саботажу розробників пізніше. Ви можете зловживати будь-якою неоднозначністю в інших правилах, або можете скористатися кількома правилами, які самі по собі нешкідливі, але одночасно дьявольські!
- Ви повинні розмістити пояснення в тегах спойлерів у кінці публікації про те, як ви могли зловживати правилами
- Використовувана мова не повинна бути езотеричною мовою. Мова, яка широко використовується в реальних проектах, повинна бути обрана, тому мови з C-подібним синтаксисом (замість таких речей, як Golfscript).