그래서 저는 C ++로 첫 프로젝트를 코딩하고 있는데, 코드를 "정리"하게 만드는 것보다 더 많은 노력이 필요한 것 같습니다. 즉, C ++은 추악하지만 작동하는 코드를 작성할 수있는 것처럼 보입니다.
내가 생각하게했던
프로그래밍 언어가 의도적으로 깨끗한 코드를 시행 할 수 있습니까? 그런 언어가 이미 있습니까?
또한 이것이 프로그래밍 언어 개발 / 이론에서 디자인 원칙으로 어떻게 통합됩니까? 어떤 조치가 사용됩니까?
그래서 저는 C ++로 첫 프로젝트를 코딩하고 있는데, 코드를 "정리"하게 만드는 것보다 더 많은 노력이 필요한 것 같습니다. 즉, C ++은 추악하지만 작동하는 코드를 작성할 수있는 것처럼 보입니다.
내가 생각하게했던
프로그래밍 언어가 의도적으로 깨끗한 코드를 시행 할 수 있습니까? 그런 언어가 이미 있습니까?
또한 이것이 프로그래밍 언어 개발 / 이론에서 디자인 원칙으로 어떻게 통합됩니까? 어떤 조치가 사용됩니까?
답변:
언어 디자인이 "깨끗한 코드"에 미치는 주요 효과는 구문 수준입니다. 속기 및 애매한 연산자 (Perl / APL)가 많은 언어는 "더러운"코드에 적합하지만 작은 요소 세트 (예 : Python)가있는 언어는 더 깨끗한 코드에 적합합니다.
그러나 의미론은 매우 다른 동물입니다. 언어의 의미가 깨끗한 방식으로 사용되도록 강요 할 수있는 방법은 없습니다. 특히 컴파일러로서 언어 사용자가 달성하려고하는 것을 알 수 없기 때문입니다. 강력한 도구는 단순히 좋은 도구입니다.
하루가 끝나면 구문보다 의미가 더 중요합니다. 또한 유지 관리 개발자로 파악하기가 가장 어려운 부분이기도합니다 (예 : "이 코드는 실제로 무엇을 의미합니까? 무엇을하는지 알 수 있습니다 ...").
결과적으로 깨끗한 코드를 적용 할 디자인이 없지만 깨끗한 의미론으로 간단한 구문을 작성하여 더 쉽게 만들 수 있다고 말할 수 있습니다. 더 나은 또는 나쁜, 깨끗 한 코드는 주로 개발자 지식, 동기 부여, 훈련 및 기술의 문제입니다.
언어는 프로그래머가 깨끗한 코드 정의의 일부인 특정 종류의 버그를 해결하도록 강요하거나 장려 할 수 있습니다. 예를 들어, 다양한 언어는 비교적 적절한 주소 지정 작업을 수행합니다.
깨끗한 코드는 주로 사람과 사람 사이의 의사 소통에 관한 것이기 때문에 여러분에게 도움이 될 것 입니다. 프로그래밍 언어에는 실제로이를 지원할 수있는 수단이 하나 뿐이며 이것이 바로 표현력 입니다. 정의하기는 정말 어려운 용어이지만 기본적으로 좋은 프로그래머는 좀 더 표현적인 언어로 더 깨끗한 코드를 작성하는 것이 더 쉽습니다. 다른 사람과 잘 소통하는 알고리즘을 쉽게 표현할 수있는 더 많은 도구가 있습니다. 나에게 잘못하지 말고, 거의 모든 프로그래밍 언어로 깨끗한 코드를 작성할 수 있습니다. 일부 언어는 더 쉬워지고 상대적 결과가 더 좋습니다.
그러나 표현력을 향상시킬 수는 없으며 마술처럼 사람들이 더 나은 코드를 작성하기 시작할 것입니다. 대부분의 프로그래머는 언어를 바꿀 수있는 손잡이를 더 많이 제공하고 제대로 사용하는 방법을 모르므로 코드가 실제로 더 나빠집니다. 코드 품질을 향상 시키려면 훈련과 멘토링이 필요합니다. 은 총알이 없습니다.
수량화 할 수 있으면 최적화 할 수있는 언어를 만들 수 있습니다.
실제로 "깨끗한 코드"정책을 시행하는 특정 언어는 모르지만 빌드시 실행되는 스타일 경찰은 매우 일반적입니다.
이것이 언어로 구워지는 것과 별개의 단계 인 주된 이유는 주로 우선 순위의 기능입니다. 프로그래머가 가장 폭넓게 채택 할 수있는 유연성을 허용하는 것은 프로그래밍 언어의 가장 큰 관심사입니다. 너무 많은 프로그래밍 언어와 DSL이있어서 어떤 입력이 허용되는지에 대해 까다 롭고 의견을 제시함으로써 사용자 기반을 인위적으로 제한함으로써 더 광범위한 채택에 방해가 될 수 있습니다.
예를 들어 사람들이 글을 쓰도록 강요하는 것은 C #의 최선의 이익이 아닙니다
if (condition)
{
대신에
if (condition) {
그러나 스타일 체커 수 있습니다 즉, 그들이 할 수 있도록 설계하고 무엇 때문에 까다로운을 의견을 고집한다.
그래서 질문에 대답하기 위해
프로그래밍 언어가 의도적으로 깨끗한 코드를 시행 할 수 있습니까 ?
강조 광산
"깨끗한 코드"의 의미에 대한 강력한 정의를 제공하는 한, 절대적으로.
예를 들어, "깨끗한 코드"를 다음과 같이 정의 할 수 있습니다.
이러한 규칙 중 일부 또는 전부에 동의하지 않을 수도 있지만 하루가 끝날 무렵에는이를 수량화 할 수 있으며 프로그래밍 방식으로 시행 할 수 있습니다.
아니, 당신이 묘사하는 의미가 아닙니다. "추악함"감지는 자동으로 수행 할 수 없습니다!
그러나 언어 디자이너는 좋은 코드를 장려하기 위해 일을 할 수 있습니다 (때로는 안전하고 좋은 코드가 길고 "추악한"이기 때문에 "깨끗한"말을하고 싶지 않습니다). 예를 들어, Rust 언어의 설계자들은 징계 된 C ++ 프로그래머들이하는 경향이있는 것을 보았고 (힙 할당 값을 단일 "소유자"에게주는 것과 같이) 그러한 것들 중 일부를보다 쉽게 수행 할 수있었습니다. 여기에는 일반적인 실수를하지 않았는지 확인하는 데 사용할 수있는 유형 검사기가 포함됩니다.
좋은 언어 디자인은 종종 반응 적이라고 말합니다. 디자이너는 좋은 프로그래머가하는 일을보고 더 쉽고 더 예쁘게 만들려고합니다.