Питання насправді не в тому, чи добре метапрограмування чи ні, а про те, чи нормально бути кращим за інших у команді, ось ось кілька суперечливих моментів щодо того, як я це бачу ...
Нещодавно я перейшов на нову роботу, де працюю в більшій команді, і це [метапрограмування] хвилює деяких моїх колег, оскільки вони не розуміють цього.
Вони переживають, що ти краще за них. Добре. Ти будеш новим експертом. Ви просто знищили їхній статус-кво світ.
Я завжди намагаюся використовувати весь потенціал мови, але деякі (не всі) мої колеги сприймають це як ризик (деякі вітають підхід).
Звичайно, ніхто не любить бути менш кваліфікованим, ніж будь-хто інший, тому вони намагаються утримати вас від використання занадто складних для них технік. Вони або не можуть цього зрозуміти, або не збираються, бо зараз почуваються захищеними.
Я погоджуюсь, що проблема написання коду, який ніхто інший у команді не може зрозуміти.
Я не. Я думаю, що це показує вашу експертизу.
Моє запитання, хто правий, що мені робити?
Ви повинні використовувати всі свої навички, щоб написати найкращий код, який ви можете написати, а не озиратися на тих, хто цього не розуміє. Інакше ти зациклюєшся на їхньому рівні і станеш просто звичайним кодером. Добре бути кращим за інших, і добре намагатися бути кращим за них. Ви ніколи не отримаєте нового досвіду, якщо не будете намагатися використовувати щось нове або робити щось по-іншому.
Я знаю, що я буду знятий, але ось як це виглядає. Не бути злочином бути кращим за інших в колективі, і не злочин використовувати свої навички. Просто всі бояться це визнати ... бо вони на некваліфікованій стороні і ненавидять, що новий хлопець раптом може зробити щось, чого не може. Якби вони були розумні, вони просили б вас допомоги та поради, а не критикували ваш код за незрозумілість.
EDIT
Здається, в цьому питанні багато плутанини. Як показують коментарі, багато людей думають, що мова йде про загальну читабельність коду. Ні це не так. Йдеться про те, чи слід забороняти чи уникати певні мовні особливості / конструкції, оскільки деякі члени команди не розуміють їх.
Моя відповідь - ні . Їх не слід забороняти. Якщо ви хочете щось заборонити, як би ви це зробили? Вам доведеться підготувати анкету, щоб дізнатись, що можуть, а що не можуть члени вашої команди, а точніше - не хочуть вчитися, оскільки я думаю, що всі функції язика корисні десь, тому їх знання та можливість їх використання завжди добре і чим більше ви знаєте, тим краще код можна написати. Вам також знадобиться шкала, щоб визначити, які функції мають початкові, середні та просунуті.
Для того, щоб продемонструвати, наскільки такі нерозумні обмеження, давайте візьмемо дійсно простий приклад: вас приймуть на роботу в якості інженера-програміста, але ваш майбутній начальник скаже вам, що вам не дозволять використовувати do/while
петлі, оскільки на цьому працює пару людей команда, яка ніколи раніше не використовувала їх, і також не збирається, тому що вони завжди використовували for
петлі для всього, тому вони вважають do/while
петлі заплутаними.
Тепер ви думаєте, що це дурно і шалено, чи не так? Але так забороняється інші функції. Деякі поепли можуть їх використовувати, а інші не хочуть їх вивчати.
Чому слід створювати гірший код, якщо ви знаєте, що є щось, що дозволяє вам робити те ж саме з набагато меншими зусиллями, але при цьому в результаті набагато більш читабельні надійні коди?
І не важливо, чи ви використовуєте лише основні мовні функції або розширені, ви можете використовувати будь-яку, щоб створити однаково незбагненний і нездійсненний код, тому це абсолютно різня тема.