문제는 실제로 메타 프로그래밍이 올바른지 아닌지에 대한 것이 아니라 팀의 다른 사람들보다 나은 것이 좋은지에 관한 것입니다. 그래서 여기에 내가 어떻게 보는지에 대한 몇 가지 논란이 있습니다 ...
나는 최근에 더 큰 팀에서 일하고있는 새로운 직장으로 옮겼는데,이 [메타 프로그래밍]은 동료들을 이해하지 못하기 때문에 일부 동료들을 걱정합니다.
그들은 당신이 그들보다 낫다는 것을 걱정합니다. 잘 됐네요 당신은 새로운 전문가가 될 것입니다. 당신은 그들의 현 상태 세계를 파괴했습니다.
나는 항상 언어의 잠재력을 최대한 활용하려고 노력하지만, 동료의 일부 (전부는 아님)가 위험으로 인식합니다 (일부는 환영합니다).
물론, 다른 누구보다 숙련도가 떨어지는 사람은 아무도 없기 때문에 너무 복잡한 기술을 사용하지 못하게합니다. 그들은 안전하다고 느끼기 때문에 그것을 이해할 수 없거나 가지 않을 것입니다.
팀의 다른 누구도 이해할 수없는 코드를 작성하는 것이 문제라는 데 동의합니다.
난 아니야 나는 그것이 당신의 전문 지식을 보여주는 것이라고 생각합니다.
내 질문은 누가 옳은가, 어떻게해야합니까?
모든 기술을 사용하여 작성할 수있는 최상의 코드를 작성해야하며 이해하지 못하는 사람을 뒤돌아 보지 마십시오. 그렇지 않으면 당신은 그들의 수준에 갇히게 될 것이고 보통 코더가 될 것입니다. 다른 사람보다 나아지는 것이 좋으며, 그들보다 나아지기 위해 노력하는 것이 좋습니다. 새로운 것을 사용하거나 다르게 행동하지 않으면 새로운 경험을 얻지 못할 것입니다.
제가 다운 보트 될 것임을 알고 있지만 이것이 어떻게 생겼는지입니다. 팀의 다른 사람들보다 나은 것은 범죄가 아니며 기술을 사용하는 것은 범죄가 아닙니다. 그것은 모두가 그것을 인정하는 것을 두려워하는 것입니다 ... 그들은 기술이없는쪽에 있기 때문에 새로운 사람이 갑자기 할 수없는 일을 할 수 있다는 것을 싫어하기 때문입니다 . 그들이 영리하다면 도움과 조언을 구하고 이해하기 어려운 코드를 비판하지 않습니다.
편집하다
이 질문에 대해 많은 혼란이있는 것 같습니다. 의견에서 알 수 있듯이 많은 사람들은 일반적인 코드 가독성에 대해 생각합니다. 아뇨. 일부 팀원이 이해하지 못하기 때문에 특정 언어 기능 / 구문을 금지하거나 피해야하는지에 관한 것입니다.
내 대답은 아니요 입니다. 금지해서는 안됩니다. 무언가를 금지하고 싶다면 어떻게 하시겠습니까? 팀원들이 할 수있는 것과 할 수없는 것을 찾기 위해 어떤 종류의 설문지를 준비해야합니다. 또는 모든 언어 기능이 어딘가에 유용하기 때문에 배우고 싶지 않기 때문에 배우고 싶지 않습니다. 좋을수록 더 좋은 코드를 작성할 수 있습니다. 또한 초보자, 중급 또는 고급 기능을 정의 할 수있는 스케일이 필요합니다.
이러한 제한이 얼마나 어리석은지를 보여주기 위해 실제로 간단한 예를 들어 보겠습니다. 소프트웨어 엔지니어로 고용되지만 미래의 상사는 do/while
두 사람이 있기 때문에 루프 를 사용할 수 없다고 알려줍니다 이전에는 사용하지 않았으며 항상 for
모든 것에 루프를 사용하여 루프가 do/while
혼란스러워 지기 때문에 사용하지 않는 팀 .
이제 당신은 이것이 멍청하고 미쳤다고 생각합니까? 그러나 다른 기능도 금지됩니다. 어떤 사람들은 그것들을 사용할 수 있고 다른 사람들은 배우기를 원하지 않습니다.
훨씬 적은 노력으로도 똑같이 할 수 있지만 훨씬 더 읽기 쉬운 코드를 만드는 것을 알고 있다면 더 나쁜 코드를 생성해야하는 이유는 무엇입니까?
기본 언어 기능 만 사용하거나 고급 기능 만 사용하더라도 중요하지 않으며 유지 관리가 불가능한 코드를 생성하여 완전히 다른 주제가 될 수 있습니다.