너무 걱정하지 않아도 될 정도로 운이 좋았습니까, 아니면 나쁜 프로그래머입니까?
당신은 당신의 요구 사항에 관심이 있습니까? 성능이 필요하지 않은 경우 걱정하지 마십시오. 상당한 시간을 보내는 것은 고용주에게 장애가됩니다.
어느 정도까지는 성능이 항상 요구됩니다. 당신이 그것에 대해 생각하지 않고 칠 수 있다면, 당신은 그것에 대해 생각하지 않는 것이 정당합니다.
개인적으로 테스트를 통과하는 데 오랜 시간이 걸리면 성능에 의해 가장 많이 주도됩니다. 일련의 테스트가 통과되는 동안 5 분 정도 기다리기에는 너무 조급합니다. 그러나 그것은 일반적으로 테스트를 통해 해결됩니다.
내 질문은 왜 많은 프로그래머들이 그렇게 많은 관심을 가지는가? 실제로 대부분의 개발자에게 문제가됩니까?
그들이 얼마나 관심을 갖고 있는지 정당화되는 많은 프로그래머들이 있습니다. 그렇지 않은 많은 사람들이 있습니다. 그렇지 않은 사람들에 대해 이야기합시다.
프로그래머가 학교에서 가장 먼저 배우는 것 중 하나는 실제로 일을 수행하는 방법 후에 큰 O 표기법입니다. 그들 중 많은 사람들이 교훈을 제대로 배우고 따라서 n에 의해 극적으로 영향을받는 것에 초점을 맞 춥니 다. 다른 사람들은 수학을 얻지 못하고 일단 작동하면 빨리해야한다는 교훈을 빼앗아갑니다. 더구나,이 학생들 중 일부는 코드를 작동시키고 빠르게 작동시키는 것 외에 코드와 관련하여 중요한 것이 무엇인지 배우지 않습니다. 놓친 교훈 : 읽기 쉽고, 잘 디자인하고, 이유없이 놀아서는 안됩니다.
크 누스는 옳았다 : 조기 최적화는 모든 악의 근원이다. 그러나 일단 작동하면 다음 단계는 무엇입니까? 빨리요? 아니! 다음 단계는 읽을 수 있습니다. 읽을 수있는 것은 첫 번째, 다음, 중간 및 마지막 단계입니다. 불필요한 성능 최적화를 수행하는 많은 사람들이 버스에서 가독성을 떨어 뜨리고 있습니다.
어떤 사람들은 코드를 읽을 수 없다는 점에서 이상한 스릴을 얻습니다. 그들은 다른 사람들이 만든 코드를 이해하기가 힘들어 보였으므로 이제 돈을 돌려야합니다.
나는 이것을하기 때문에 이것을 알고있다. 한 번만 읽을 수없는 한 줄 부울 식으로 구조를 읽을 경우 완벽하게 읽을 수있는 5 줄을 리팩터링하고 너무 작고 위협적인 것을 만들 수 있기 때문에 인상을 기대하는 교수에게 자랑스럽게 보냈습니다. 내가 기대했던 칭찬을 얻지 못했습니다.
코드를 읽을 수 있으면 나중에 쉽게 만들 수 있습니다. 그래서 Knuth는 "필요하지 않은"것이 아니라 "조기"를 강조합니다. 확실하기 때문에 빠를수록 좋습니다. 그러나 당신이 그것을 위해 무엇을 희생 하느냐에 따라서 만 더 좋습니다. 따라서 희생을하기 전에 실제로 필요한 성능을 알 때까지 기다리십시오. 일단 가버린 후에는 되돌릴 수 없기 때문에 가독성을 희생적으로 희생하십시오.
가독성을 넘어서는 소프트웨어 디자인의 전 세계입니다. 이 사이트의 내용 일부는 디자인까지 무엇을해야하는지 전혀 모른다. 그래서 그들은 디자인에 깊은 인상을 줄 수 없기 때문에 사람들이 단서가 없다고 말할 수 없도록 엉망진창을 만듭니다. 아무도 코드를 수정하지 않았으므로 올바른 코드 여야합니까?
일부의 경우 성능은 원하는대로 수행 할 수있는 모든 변명입니다. 프로그래머에게는 많은 힘과 자율성이 있습니다. 그들에게 신뢰가 주어졌습니다. 신뢰를 남용하지 마십시오.