페이지 트리

클린 코드(Clean Code)는 구조와 일관성을 통해 읽기, 유지 관리(maintain), 이해 및 변경이 쉽지만 성능 요구 사항을 견딜 수 있을 만큼 강력하고 안전하게 유지되는 코드입니다. 이를 통해 소프트웨어의 가치를 극대화할 수 있습니다.



클린 코드 원리와 베스트 프렉티스

고품질(high quailty), 신뢰성(reliable), 유지 관리(maintainable) 및 보안(secure)을 갖춘 소프트웨어를 제공하려면 기본 코드가 강력해야 합니다. 코딩의 베스트 프렉티스에 따르면 조직은 비즈니스 목표에 필요한 민첩성, 속도 및 개발 규모를 달성할 수 있습니다.


일관성(Consistent)


코드는 일관성을 유지하고 공통 스타일을 따라야 합니다. 이는 시간이 지나도록 다른 사람들이 작업한 모든 코드가 비슷한 모습을 가져야 하며, 확립된 패턴을 준수해야 한다는 것을 의미합니다. 이 일관성은 특정 코드베이스 내에서만 적용되는 것이 아니라 이상적으로는 전체 프로그래밍 언어 생태계에 걸쳐 적용되어야 합니다.

코드 일관성은 서로 다른 시간에 여러명의 개발자가 개발을 하더라도 유사해 보이고, 규칙적인 패턴을 따르는 것을 말합니다. 일관된 코드는 형식화(formatted)되고 규칙적(conventional)이며 식별가능(identifiable)합니다. 

예를 들면 코드의 형식이 잘 지정되어 있으면, 체계적이고, 규칙적이므로 개발자가의 코딩 스타일 차이가 줄어들고, Pull Request 시, 동료의 코드 검토가 빨라집니다. 


  • 형식화(Formatted) : 
    • 코드는 잘 구성, 체계적, 표준화되어야 합니다. 간격(Spacing), 들여쓰기, 문자 배치 등 일관되게 유지되어 작성자 간의 통일성을 유지해야 합니다. 

      잘못된 코드
      Non-compliant code:
      class Foo {
        public int a;
          public int b;
      
        public void doSomething() {
          if(something) {
                doSomethingElse();
        }
        }
      }
      
      

      잘된 코드
      Compliant code:
      class Foo {
        public int a;
        public int b;
      
        public void doSomething() {
          if(something) {
            doSomethingElse();
          }
        }
      }

      참조 - https://sonarsource.github.io/rspec/#/rspec/S1120/java

  • 규칙화(Conventional) : 
  • 식별가능(Identifiable) : 
    • 이름은 언어적인 컨벤션 기반의 구조화되어야 합니다. 식별자에는 대/소문자 구분, 접미사, 접두사 등 차이점 없이 사용되어야 합니다. 

      잘못된 코드
      Non-compliant code:
      class my_class {...}
      class SOMEName {...}


      잘된 코드
      Compliant code:
      class MyClass {...}
      class SomeName {...}

      참조 - https://sonarsource.github.io/rspec/#/rspec/S101/csharp


의도성(Intentional)

코드는 명확(clear)하고 정밀(precise), 목적(purposeful)을 가지고 있습니다. 의도된 코드는 목적을 전달하기 위해 작성되고 의미가 있고 적절히 구성되어 심플하게 동작을 전달합니다. 

예를 들어, 명확한 코드는 설명이 필요 없으며 해당 기능을 투명하게 전달하므로 프로그램을 더 쉽게 이해할 수 있고 버그 발생 가능성이 줄어듭니다. 



적응성(Adaptable)

코드는 췹고 신뢰할 수 있게 구조화되어 확장하거나 용도를 변경할 수 있으며, 변경 시, 부작용(Side Effects)이 없어야 합니다. 적응형 코드는 집중적(focused)이고 규율적(distinct)이며 모듈화(modular)되고 테스트(test)되어야 합니다. 

예를 들어, 코드가 모듈화되어 있으면, 코드가 구성 및 분산되어 관리가 더 쉽고 내부 관계를 명확하게 정의할 수 있습니다 .


책임감(Responsible)

코드는 데이터에 대한 윤리적 의무와 사회적 규범의 잠재적 영향을 고려합니다. 책임감 있는 코드는 합법적이며, 신뢰할 수 있고, 존중받아야 합니다.

예를 들어, 우리가 코드를 합법적이라고 분류할 때, 이는 코드가 라이선싱 및 저작권 규정을 존중하며, 창작자가 자신의 코드를 라이선스 할 수 있게 하고, 다른 사람의 라이선싱 권리를 존중한다는 것을 의미합니다. 마찬가지로 중요한 것은, 코드는 신뢰할 수 있어야 하며, 비밀을 포함하고 있지 않아야 합니다.




  • 레이블 없음