Вопрос не в том, хорошо ли метапрограммирование или нет, а в том, можно ли быть лучше, чем другие в команде, поэтому вот несколько спорных моментов о том, как я это вижу ...
Недавно я перешел на новую работу, где я работаю в более крупной команде, и это [метапрограммирование] беспокоит некоторых моих коллег, потому что они этого не понимают.
Они беспокоятся, что ты лучше их. Это хорошо. Ты будешь новым экспертом. Вы только что разрушили их мир статус-кво.
Я всегда стараюсь использовать весь потенциал языка, но некоторые (не все) мои коллеги воспринимают это как риск (некоторые приветствуют такой подход).
Конечно, никто не любит быть менее опытным, чем кто-либо другой, поэтому они пытаются помешать вам использовать слишком сложные для них методы. Они либо не могут этого понять, либо не собираются этого делать, потому что теперь они чувствуют себя в безопасности.
Я согласен, что писать код, который никто другой в команде не может понять, - это проблема.
Я не. Я думаю, что это показывает ваш опыт.
У меня вопрос, кто прав, что мне делать?
Вы должны использовать все свои навыки, чтобы написать лучший код, который вы можете написать, и не оглядываться на тех, кто его не понимает. В противном случае вы застрянете на их уровне и будете просто обычным кодером. Хорошо быть лучше других и стараться быть лучше их. Вы никогда не получите новый опыт, если не будете пытаться использовать что-то новое или делать что-то по-другому.
Я знаю, что за меня проголосуют, но так это выглядит. Быть лучше других в команде - это не преступление, и это не преступление - использовать свои навыки. Просто все боятся признать это ... потому что они на неопытной стороне и ненавидят это за то, что новый парень вдруг может сделать то, что не может. Если бы они были умны, они бы попросили вас о помощи и совете, а не критиковали бы ваш код за непонятность.
РЕДАКТИРОВАТЬ
Кажется, в этом вопросе много путаницы. Как показывают комментарии, многие думают, что речь идет об общей читабельности кода. Нет, это не так. Речь идет о том, следует ли запрещать или избегать определенные языковые функции / конструкции, потому что некоторые члены команды их не понимают.
Мой ответ - нет . Они не должны быть запрещены. Если вы хотите что-то запретить, как бы вы это сделали? Вам нужно подготовить какую-то анкету, чтобы узнать, что члены вашей команды могут и не могут - или, скорее, не хотят учиться, так как я думаю, что все языковые функции где-то полезны, поэтому знать их и использовать их всегда хорошо, и чем больше вы знаете, тем лучше код, который вы можете написать. Вам также понадобится шкала, чтобы определить, какие функции являются начальными, промежуточными или продвинутыми.
Чтобы продемонстрировать, насколько глупы такие ограничения, давайте возьмем действительно простой пример: вас будут нанять инженером-программистом, но ваш будущий начальник скажет вам, что вам не разрешат использовать do/while
циклы, потому что на команда, которая никогда не использовала их раньше и также не собирается, потому что они всегда использовали for
циклы для всего, поэтому они находят do/while
циклы запутанными.
Теперь вы думаете, что это глупо и безумно, не так ли? Но так запрещает другие функции. Некоторые люди могут использовать их, а другие не хотят учить их.
Зачем вам создавать худший код, если вы знаете, что есть что-то, что позволяет вам делать то же самое с гораздо меньшими усилиями, и в то же время получить гораздо более читабельный и надежный код?
И не важно, используете ли вы только базовые языковые функции или расширенные, вы можете использовать любой из них для создания одинаково непонятного и не поддерживаемого кода, так что это совершенно другая тема.