Pytanie tak naprawdę nie dotyczy tego, czy meta-programowanie jest w porządku, ale raczej, czy lepiej jest być lepszym niż inni w zespole, więc oto kilka kontrowersyjnych punktów na temat tego, jak to widzę ...
Niedawno przeniosłem się do nowej pracy, w której pracuję w większym zespole, a to [metaprogramowanie] martwi niektórych moich kolegów, ponieważ oni tego nie rozumieją.
Martwią się, że jesteś lepszy od nich. Dobre. Będziesz nowym ekspertem. Właśnie zniszczyłeś ich status quo.
Zawsze staram się wykorzystać pełny potencjał języka, ale niektórzy (nie wszyscy) moi koledzy postrzegają to jako ryzyko (niektórzy z zadowoleniem przyjmują takie podejście).
Jasne, nikt nie lubi być mniej wykwalifikowany niż ktokolwiek inny, dlatego starają się powstrzymać cię przed użyciem zbyt skomplikowanych technik. Albo nie mogą tego zrozumieć, albo nie zamierzają, ponieważ czują się teraz bezpiecznie.
Zgadzam się, że pisanie kodu jest problemem, którego nikt inny w zespole nie jest w stanie zrozumieć.
Ja nie. Myślę, że to pokazuje twoją wiedzę.
Moje pytanie brzmi: kto ma rację, co powinienem zrobić?
Powinieneś wykorzystać wszystkie swoje umiejętności, aby napisać najlepszy kod, jaki możesz napisać i nie spoglądać za tych, którzy go nie rozumieją. W przeciwnym razie utkniesz na ich poziomie i będziesz zwykłym programistą. Dobrze jest być lepszym od innych i dobrze jest dążyć do bycia lepszym od nich. Nigdy nie zyskasz żadnego nowego doświadczenia, jeśli nie spróbujesz użyć niczego nowego lub nie zrobisz czegoś inaczej.
Wiem, że zostanę przegłosowany, ale tak to wygląda. Bycie lepszym od innych w zespole nie jest przestępstwem i wykorzystywanie swoich umiejętności nie jest przestępstwem. Po prostu wszyscy boją się to przyznać ... ponieważ są po stronie niewykwalifikowanej i nienawidzą tego, że nowy facet nagle może zrobić coś, czego nie może. Gdyby byli sprytni, poprosiliby cię o pomoc i radę i nie krytykowali twojego kodu za niezrozumienie.
EDYTOWAĆ
Wydaje się, że istnieje wiele zamieszania w związku z tym pytaniem. Komentarze pokazują, że wiele osób uważa, że chodzi o ogólną czytelność kodu. Nie, nie jest. Chodzi o to, czy niektóre funkcje / konstrukcje językowe powinny być zabronione czy unikane, ponieważ niektórzy członkowie zespołu ich nie rozumieją.
Moja odpowiedź brzmi: nie . Nie powinny być zabronione. Jeśli chcesz coś zabronić, jak byś to zrobił? Będziesz musiał przygotować jakiś kwestionariusz, aby dowiedzieć się, co członkowie twojego zespołu mogą, a czego nie mogą - a raczej nie chcą się uczyć, ponieważ uważam, że wszystkie funkcje języka są gdzieś przydatne, więc ich znajomość i możliwość korzystania z nich jest zawsze dobrze, a im więcej wiesz, tym lepszy kod możesz napisać. Potrzebujesz również skali, aby określić, które funkcje są dla początkujących, średnio zaawansowanych lub zaawansowanych.
Aby pokazać, jak głupie są takie ograniczenia, weźmy naprawdę prosty przykład: będziesz zatrudniony jako inżynier oprogramowania, ale twój przyszły szef mówi ci, że nie będziesz mógł używać do/while
pętli, ponieważ jest kilka osób na zespół, który nigdy wcześniej ich nie używał, a także tego nie zrobi, ponieważ zawsze używali for
pętli do wszystkiego, więc uważają do/while
pętle za mylące.
Teraz myślisz, że to głupie i szalone, prawda? Ale tak samo zabrania się innych funkcji. Niektórzy ludzie mogą z nich korzystać, a inni nie chcą się ich uczyć.
Dlaczego powinieneś produkować gorszy kod, jeśli wiesz, że jest coś, co pozwala ci robić to samo przy znacznie mniejszym wysiłku, a jednocześnie zapewnia o wiele bardziej czytelny, solidny kod?
I nie ma znaczenia, czy używasz tylko podstawowych funkcji językowych, czy zaawansowanych, możesz użyć jednego z nich, aby stworzyć równie nieprzenikniony i niemożliwy do utrzymania kod, więc jest to zupełnie inny temat.