깨끗한 코드 예술의 5가지 기교 습득

Good programmers write boring code. Great programmers write really boring code


작년 어느 날 인터넷에서 이 말을 보았을 때, 그것은 나에게 깨끗한 코드의 개념을 소개했다.

깨끗한 코드는 무엇입니까?


간단하게 말하면 깨끗한 코드는 쉽게 읽고 이해할 수 있는 코드 라이브러리를 가리킨다.깨끗한 코드의 몇 가지 현저한 특징은 다음과 같다.
  • 독자의 인지적 부하 감소
  • 직관적으로 명명된 변수와 함수 포함
  • 인코딩에 따른 모범 사례
  • 내 코드는 깨끗한 코드가 없어도 왜 깨끗한 코드를 사용해야 합니까?


    그렇게 물어봐서 반갑습니다.깨끗한 코드는 유효한 코드를 작성하는 것이 아니라 읽기 쉽고 장기적으로 유지보수하기 쉬운 코드를 작성한다.이 그림에서 알 수 있듯이 더러운 코드 라이브러리를 유지하는 비용은 시간의 추이에 따라 급격히 증가하고 깨끗한 코드의 경우 상당히 안정적이다.

    깨끗한 코드가 가장 짧거나 똑똑해 보이는 것도 아니지만 우아한 코드라 최소한의 노력만으로도 이해할 수 있다.
    프로그래밍은 과학일 뿐만 아니라 예술이기도 하다.다음은 깨끗한 코드를 작성하는 데 도움을 주는 힌트입니다.

    1. 직관적인 변수명


    변수가 무엇을 저장하고 있는지 계산을 통해 검사하는 사람은 아무도 없을 것이 분명하다.
    예1
    const x = n.filter(e => e > 0);
    
    예2
    const positiveElements = numbers.filter(num => num > 0);
    
    보시다시피 두 번째 예는 첫 번째 예보다 이해하기 쉽다.
    부울형에 대해 변수명은 예나 아니오로 대답할 수 있는 문제이어야 한다. 예를 들어
    const isValid = false;
    const hasAuthorization = true;
    

    2. 자체 해석 기능


    함수나 메서드를 작성할 때는 다음 두 가지를 기억해야 합니다.
  • SRP 준수
  • 함수명은 동작어(동사)여야 한다
    SRP(Single Community Productions)는 특정 작업을 수행할 수 있도록 규정하고 있습니다.예를 들어 서버에 데이터를 보내는 함수는 데이터를 검증해서는 안 된다.
    const validate = (data) => {
     // ...
    }
    
    const sendData= (data) => {
     // ...
    }
    
    const submit = (data) => {
      if (!validate(data)){
        return;
      }
      sendData(data)
    }
    
    또 두 가지 따를 만한 원칙이 있다.
  • 기능체는 2 레벨 이상의 네스트를 포함해서는 안 됩니다
  • .
  • 함수는 최대 3개의 매개 변수가 있어야 한다
  • 3. 비슷한 기능을 조합한다


    우리는 지금 응집력의 개념을 만났다.내중성은 모듈 원소의 기능과 관련된 정도의 도량이다.
    관련 함수는 하나의 클래스에서 한데 조합되어 코드의 블록 분할을 유지하는 데 도움을 주어야 한다
    class IOHelper:
      @staticmethod
      def read_data(file_name: string) -> None:
        pass
    
      @staticmethod
      def write_data(file_name: string, data: Any) -> None:
        pass
    
    여기서, 우리는 IOHelper 클래스가 IO 조작의 함수만 한데 조합하고, 자신의 어떠한 실용 프로그램도 없다는 것을 발견했다.

    4. 댓글의 수를 최대한 줄인다


    일부 초보자들에게는 직감에 어긋날 수도 있지만 똑똑히 들으세요.당신이 작성한 코드는 스스로 해석해야 하며, 코드를 보는 사람은 주석에 의존해서 그 기능을 이해할 필요가 없습니다.
    소수의 경우, 만약 직관적이지 않은 코드가 해결 방법이 없다면, 주석이 필요할 수도 있습니다.
    // using setTimeout to avoid race-condition
    setTimeout(fn, 0)
    

    5. 코드 형식


    코드 라이브러리는 항상 엄격한 형식 규칙을 따라야 한다.blackprettier 같은 포맷 프로그램을 사용하여 자동으로 포맷하는 것도 좋은 생각이다.
    프로젝트 구조는 프로젝트를 시작하기 전에 확정해야 한다. 프로젝트에 참여하는 모든 사람들이 프로젝트 구조를 이해하고 준수하는 것에 동의해야 한다. 왜냐하면 프로젝트 구조는 환경에 달려 있고 모든 사람들이 다른 구조가 아닌 특정한 구조를 좋아하기 때문이다.
    변수와 함수 명명 약정도 미리 지정(isValid하거나 hasVality 등), 언어에 특정한 상황(예를 들어python의 스nake case와 JS/TS의camel case)을 기억해야 한다.
    snake_case_variable = "value"
    
    camelCaseVariable = "value"
    

    결론


    앞에서 언급한 바와 같이 깨끗한 코드는 가장 짧은 코드가 아니지만 가장 이해하기 쉽다.이러한 원칙에 따라 당신이 더 좋은 인코딩원이 되는 것은 인코딩 기술을 향상시키는 것이 아니라 인코딩에 필요한 소프트 기술을 향상시키는 것이다. 왜냐하면 이것은 비기술자에게 코드를 설명하는 방법을 가르쳐 주기 때문이다.

    읽어주셔서 감사합니다.


    같이 일하고 싶어요?전화 Upwork로 문의하십시오.
    뭐 하는지 보고 싶으세요?내 보기 GitHub
    2022년 중 디지털 유목자로 출발하는 프리랜서입니다.길을 재촉하고 싶습니까?따라와.
    내 블로그에 관심을 가지고 매주 뉴스를 이해하다
    FAQ
    다음은 내가 자주 묻는 몇 가지 문제다.그래서 나는 이 흔한 문제 부분이 너의 문제를 해결할 수 있기를 바란다.

  • 저는 초보자입니다. 전단 네트워크 개발을 어떻게 배워야 합니까?
    먼저 HTML, CSS와 JS의 기본 지식을 이해한다.모든 프런트엔드 프레임워크/라이브러리(React, Vue, Angular) 배우기;그리고 계속해서 프로젝트를 하거나 개원 공헌을 해서 정통성을 얻도록 하세요.
    관련 기사 링크
    1
    2
  • 지도해 주시겠어요?
    죄송하지만, 제 업무량이 너무 많아서, 누구를 지도할 시간이 없습니다.
  • 내 전화를 받아라

  • Portfolio
  • Upwork
  • GitHub

  • 좋은 웹페이지 즐겨찾기