問題は、実際にはメタプログラミングが大丈夫かどうかではなく、チームの他の人よりも優れているかどうかということなので、ここで私がそれをどのように見るかについていくつかの議論の余地があります...
私は最近、より大きなチームで働いている新しい仕事に移りました。この[メタプログラミング]は、同僚が理解できないため、一部の同僚を心配しています。
彼らはあなたが彼らより優れていることを心配しています。それは良い。あなたは新しい専門家になるでしょう。あなたは彼らの現状を破壊しました。
私は常に言語の可能性をフルに活用しようとしますが、同僚の一部(すべてではない)がそれをリスクとして認識しています(一部はアプローチを歓迎します)。
確かに、誰も他の誰よりも熟練するのを好まないので、彼らはあなたにとって彼らにとって複雑すぎるテクニックを使うことを止めようとしています。彼らは今それを理解できないか、行こうとしません。
チームの他の誰も理解できないコードを書くことは問題だと思います。
しません。あなたの専門性を示していると思います。
私の質問は、誰が正しいのか、私は何をすべきですか?
あなたが書くことができる最高のコードを書くためにあなたのすべてのスキルを使うべきです、そして、それを理解していない人々を後ろに見ないでください。そうでなければ、あなたは彼らのレベルで立ち往生し、普通のコーダーになります。他人よりも優れていることは良いことであり、他人よりも良くなるように努力することは良いことです。新しいものを使用したり、異なることをしようとしないと、新しい経験を得ることができません。
私は投票されることは知っていますが、これはそれがどのように見えるかです。チームの他の人よりも優れていることは犯罪ではなく、スキルを使用することは犯罪ではありません。誰もがそれを認めることを恐れているというだけです...彼らは非熟練の側にいて、新しい男が突然彼らができないことをすることができるということを嫌うからです。彼らが賢い場合、彼らはあなたに助けとアドバイスを求め、理解できないことについてあなたのコードを批判しません。
編集
この質問については多くの混乱があるようです。コメントが示すように、多くの人々は一般的なコードの読みやすさについてだと考えています。いいえ、ちがいます。一部のチームメンバーが理解できないため、特定の言語機能/構造を禁止または回避すべきかどうかです。
私の答えはノーです。それらは禁止されるべきではありません。何かを禁止したい場合はどうしますか?チームメンバーができることとできないことを調べるために、何らかのアンケートを用意する必要があります-または、すべてのラングアグ機能がどこかで役立つと思うので、学習したくないので、それらを知って使用できることは常により良いコードを作成できれば、より良いコードを作成できます。また、初心者向け、中級向け、または上級向けの機能を定義するためのスケールも必要です。
そのような制限がどれほど愚かであるかを示すために、本当に簡単な例を見てみましょう。あなたはソフトウェアエンジニアとして雇われることになりますが、将来の上司はdo/while
、以前にそれらを使用したことのないチームはfor
、すべてのループを常に使用しているため、do/while
ループを混乱させるため、使用しません。
今、あなたはこれが愚かでクレイジーだと思いませんか?しかし、他の機能も禁止されています。一部の人々はそれらを使用でき、他の人々はそれらを学びたくない。
はるかに少ない労力で同じことを行うことができ、さらに読みやすく堅牢なコードが得られるものがあるとわかっている場合、なぜ悪いコードを生成する必要がありますか?
また、基本的な言語機能だけを使用しても高度な機能を使用しても、どちらの機能を使用しても同等に理解できない保守不能なコードを生成できるため、これはまったく異なるトピックです。