폐쇄 . 이 질문은
의견 기반 입니다. 현재 답변을 받고 있지 않습니다.
댓글
답변
“아름다움은 눈의 판단으로 구매합니다.”
그렇지만 대부분의 프로그래머는 아름다운 코드가 명확성과 투명성, 우아함, 효율성 및 미학.
-
명확성과 투명성 : 명확성은 독자가 코드가하는 일을 얼마나 쉽게 추론 할 수 있는지입니다. 투명한 코드는 그것이하는 것처럼 보입니다. 코드가 한 가지 작업을 수행하는 것처럼 보이지만 실제로는 다른 작업 (또는 그 이상의 작업)을 수행하는 경우 투명하지 않고 잘못된 것입니다.
-
우아함 : 대부분의 알고리즘을 구현하는 방법은 여러 가지가 있지만 어떤 방법은 서투르고 다른 방법은 깔끔하고 우아합니다. 간결함은 종종 우아함을 더하지만 지나치게 간결하면 명확성이 떨어질 수 있습니다.
-
효율성 : 불필요한 리소스 사용 방지 (예 : CPU 시간, 메모리 및 I / O)
-
미학 : 눈이 편합니다. 이것은 매우 주관적입니다. 대부분 스타일에 달려 있습니다. 한 가지 중요한 고려 사항은 일관된 스타일을 갖는 것입니다. 예를 들어 들여 쓰기 스타일을 반쯤 변경하는 코드는보기 흉합니다.
댓글
답변
사람들이 멋진 코드가 다음과 같다고 생각하도록 속이지 마십시오.
- 영리한 알고리즘
- 부적절한 언어 기능
- 최소한의 키 입력으로 문제 해결
그렇지 않기 때문입니다. 이와 같은 코드는 귀엽고 확실히 한 눈에 볼 가치가 있지만 정착하고 싶은 종류의 코드는 아닙니다.
그리고 가변 람다를 상속하는 멋진 재귀 메타 템플릿 정적 다형성을 알고 있습니까? 아니면 온라인에서 읽은 내용이 무엇이든 알고 있습니까? 분명한 이유없이 혁신적이고 멋진 트릭에 뛰어 들고 싶을 수도 있습니다. 하지만 언어의 경계를 넘나 드는 코드도 아름답 지 않습니다.
그들은 섹시 입니다.
엄청나게 재미 있지만 스스로에게 물어보십시오. 이 언어의 해부학을 탐구하는 데 시간을 할애하거나 언어와 함께 작업하여 아름다운 것을 만들고 싶습니까? 결국, 프로그래밍 언어는 단지 만드는 도구 일뿐입니다.
그럼 아름다운 코드는 무엇일까요?
아름다운 코드 = 관리 가능한 코드. 그게 다야!
그게 바로 공식입니다. !
당신이 무언가를 쓸 수 있다면, 몇 달 후에 다시 돌아와서 계속 발전한다면 그것은 아름답습니다. 1 년 후 당신은 또한 기능을 추가하고 싶다는 것을 깨닫게됩니다. 기존 기능을 수정하고 상대적으로 쉽게 수행 할 수 있습니다. 그러면 아름답습니다. 다른 사람들이 여러분의 코드베이스에 들어 와서 일이 정리되어 무슨 일이 일어나고 있는지 빨리 알아낼 수 있다면, 그들은 “머리카락이 더 많고 아름다워 질 것입니다.
그래서 여러분이 물어보고 싶은 진짜 질문은 : “유지 보수가 더 쉬운 코드를 작성하려면 어떻게해야합니까?” 나는 그것이 더 큰 질문이고 꽤 창조적 인 학문이 아닐까 두렵다. 코드를 계속 작성하라. 그러나 이번에는 그것이 더 아름 다울 수 있는지 스스로에게 묻지 말라. 더 유지 보수가 용이하도록 만들 수 있는지 자문 해보십시오.
댓글
답변
내 생각으로는 “아름다운 코드”가 객관적이거나 특히 유용한 용어가 아니라는 것입니다. 그리고 우리는 그것을 정의하려고해서는 안됩니다.
영어 단어 “beauty”에 대한 일반적인 사전 정의는 다음과 같습니다.
- “1. 모두의 조합 감각을 즐겁게하고 마음을 기쁘게하는 사람이나 사물의 특성 “
- “1. 심미적 쾌락이나 마음이나 감각에 깊은 만족감을주는 사람이나 사물에 존재하는 특성. ”
- “1. 정신이나 감각에 즐거움을주고 형태 나 색상의 조화, 예술성의 우수성, 진실성 및 독창성과 같은 속성과 관련된 품질.”
(출처 http://dictionary.com )
일반적인 스레드는 “아름다움”입니다. 미적으로 만족스러운 것입니다. 그것은 필요한 주관적 입니다 … “아름다움은 보는 사람의 눈에 있습니다”라는 말에서 알 수 있듯이.
코드에 “아름다움”이라는 단어를 적용 할 수 있습니다. , 그리고 분명한 의미는 코드가 “미적으로 즐겁다”는 것입니다.
그러나 “아름다운 코드”가 특정 속성 집합을 가지고 있다고 말하는 것은 (다른 Answers에서 제안한대로) 명백한 미학적 즐거움의 의미. 미학은 사람들이 … 개별 사람들이 … 사물을 인식하는 방식입니다.
또는 다른 말로하면, 누군가가 내가 아름답다고 생각해야하는 것이 사람, 예술 작품, 또는 … 코드라고 말하는 것에 대해 혐오스러운 무언가가 있습니다.
지금까지 제가 염려하는대로 아름다운 코드는 내가 아름답다고 생각하는 코드입니다. 주관적이고 개별적이므로 그대로 두겠습니다.
답변
여기에 제 조언이 있습니다.
" 아름다운 코드 "를 어떻게 설명 할 수 있습니까? 프로그래머가 아닌 사람에게는 어떤 특성에 집중해야하는지 확인하세요. 그런 다음 코드 완성 과 같은 책을 집어 읽고 더 나은 코드를 작성하는 방법에 대한 조언을 읽어보세요.
언젠가는 이전 코드를 보는 동안 당신을 때릴 것입니다. , “이건 못 생겼어.” 직접적인 미학적 반응이 될 것입니다. 그리고 그것을 보면 당신은 프로그래머처럼 당신의 코드를보고 있다는 것을 깨닫게 될 것이고, 더 나은 코드가 어떤 모습이어야하는지 알고 있기 때문에 추악함을 볼 수있을 것입니다.
답변
아름다운 코드에 대해 자주 읽었다 고해서 코드를 작성하는 사람들이 동일한 정의를 갖는 것은 아닙니다. 슬프게도 질문으로 판단 할 때 그들이 신경 쓰지 않는 것 같습니다. 처음부터 정의하세요.
나에게 아름다운 코드는 다음과 같습니다.
표현 적이 지 않은 간결한 코드는 모호 할 수 있으며 간결하지 않은 표현형 코드는 부풀어지고 읽기가 지루한 경향이 있으므로 둘 다 필요합니다.
코드를 만드는 데 유지 보수 가능성을 포함하지 않을 것입니다. 아름답습니다. 아름다움은 행동하는 것이 아니라보고 읽는 것이기 때문입니다. 그러나 다시는 “내 개인적인 견해입니다.
답변
아름다운 코드라는 용어는 매우 모호하고 추상적 인 용어입니다. 그것이 무엇을 나타내는 지, 그것이 무엇을 의미하는지 쉽게 파악할 수 있지만, 이는 2 차 목표 이상으로 간주되어서는 안됩니다.
많은 코드 커버리지 메트릭을 상기시킵니다. 숫자가 충분히 높으면 긴장을 풀고 다른 일을 할 수 있습니다. 커버리지가 약 80 % 인 코드베이스를 갖는 것은 훌륭하지만 방탄이 아니지만 다른 일을하기에는 충분합니다. 40 %를 커버하는 것은 꽤 무섭고 그 수치를 올리도록 장려해야합니다.
포인트는 코드 커버리지가 숫자가 적을 때만 의미가 있다는 것입니다. 그러니 낮게 두지 마십시오. 적용 범위가 특정 지점까지 올라갈 때 다른 것으로 이동하십시오.
비슷하게 아름다운 코드도 좋습니다. 예쁜 코드가 있다면 다른 것으로 넘어 가세요. 그것에 대해 너무 많이 강조하지 마십시오. 당신은 결코 100 % 점수에 도달하지 않을 것입니다. 그리고 만약 당신이 그렇게한다면 당신은 그것이 무엇을 읽는지 또는 그것이 어떻게 생겼는지에 너무 많은 초점을 맞추고 있다는 것을 발견 할 것입니다. 무엇을하는지, 어떻게하는지. 그러니 합리적인 수준에 도달 한 다음 그만두세요.
하지만 코드가 흐릿하거나 스파게티 코드가 복잡하고 복잡한 경우 파일을 여는 것이 물리적으로 고통 스럽거나 댓글이 없거나 문서 등 등을 수정하십시오. 그리고 최대한 빨리하십시오.
시간이 지남에 따라 코드베이스가 일반적으로 더 깨끗하고, 일반적으로 더 밝고, 일반적으로 더 아름답고, 덜 흐릿하게 만드는 데 집중할 때 더 중요하게 더 유용하다는 것을 알게 될 것입니다. 아름다운 코드를 작성하는 것은 한 단계의 프로세스가 아닙니다.
마법의 철학이 없습니다. 1000 개의 작은 단계가 모두 함께 수행되어 코드가 얼마나 아름다운지와는 무관 한 구체적인 목적을 달성합니다. 모두 함께 제공하면 부분의 합으로 아름다운 코드를 형성합니다. Voltron 또는 Captain Planet처럼.
Answer
나는 여기에있는 답변에 정말 동의하지만 덜 기술적 인 접근 방식을 취하면 아름다운 코드는 작성자의 표현이라고 말할 수 있습니다. “잘 공식화되고 정확하지만 간단한 언어를 통해 나타나는 문제에 대한 생각의 명확성.
나에게 아름다운 코드를 보는 것은 예술 작품을 보는 것과 매우 흡사합니다. 의도뿐만 아니라 각기 다른 부분이 어떻게 실현 되었는가, 각각은 많은 질문에 대한 답을 제공하고, 마지막으로 그 존재가 경외의 말로만 설명 될 수 있도록 모든 것이 정렬되는 자연 법칙처럼 느껴지는 방식 : 웅장한 , 고무적이며, 아름답습니다.
그러므로 프로그래머로서의 경력에서 다른 사람들은 지식이 부족하여 이해하지 못할 수있는 아름다운 코드를 발견 할 수 있습니다. 너무 많은 아름다움으로;)
아름다운 코드는 달리 언급했듯이 모든 실용적인 특성을 가지고 있습니다. 전적으로 동의합니다.
답변
세 가지 기준이 있습니다.
- 단순 : 최소한 사람이 읽을 수 있어야합니다. 예를 들어, 많은 줄의 솔루션에 대해 O (1)에서 작동하는 코드를 작성할 수 있지만, 저는 0 (n)으로 작동하는 코드가 몇 줄로 해결되는 것을 선호합니다. 극단적 인 상황에서는 변경 될 수 있지만 처음에는 단순성이 중요합니다.
- 재사용 가능 : 코드는 재사용 가능하지만 덮어 쓰지 않습니다. 작업이 필요한 경우 몇 년 후 사용할 수있는 방식으로 정의해야합니다.
- 들여 쓰기 : 아마도 이것은 당신에게 문제가되지 않을 수도 있지만, 초급 레벨에게는 이것이 가장 먼저 해결되어야 할 것입니다.