클린코드, 리팩토링, 시큐어코딩

김민영·2023년 1월 13일
0

CS 스터디

목록 보기
1/32

클린코드

설명

  • 코드를 작성하는 의도와 목적이 명확하며, 다른 사람이 쉽게 읽을 수 있어야 함.
  • 가독성
  • 단순하고 직접적이며 읽기 쉬운 코드.
  • 최대한 적은 라인으로 구현한 코드.

필요성

  • 클린코드 ( 읽기 쉬운 코드 ) 는 개발 기간을 단축하는 효과적인 방법이 될 수 있음.
    • 코드를 읽는 시간 : 코드를 짜는 시간 = 10 : 1

규칙 및 특징

  1. Naming 네이밍
  • 변수, 클래스, 메소드에 의도가 분명한 이름을 사용한다.
  • 범용적으로 사용되는 단어나 연속된 숫자, 불용어를 붙이는 방식은 지양.
  1. Comment 주석 달기
  • 코드를 읽는 사람이 코드를 작성한 사람만큼 잘 이해할 수 있도록.
  • 반드시 달아야할 경우에만 작성.
  • 주석이 없어도 코드가 읽기 쉬운 것이 베스트.
  1. Aesthetics 꾸미기
  • 들여쓰기와 줄바꿈에 일관성 있고 간결한 패턴을 적용.
  • 메소드를 이용해 불규칙한 중복 코드 제거.
  • 클래스 내부에서도 여러 그룹으로 나누기.
  1. Making Control flow easy to read 흐름 제어 만들기.
  • 조건문
    • 왼쪽에 변수, 오른쪽에 상수
    • 부정이 아닌 긍정을 다룸. ex. a!=b 가 아닌 a==b
    • if/else를 사용. 삼항 연산자는 간단한 경우에만.
    • do/while은 지양.
  1. Function 착한 함수
  • 함수는 최대한 작게, 한 번에 하나의 작업만 수행하도록 작성.

리팩토링

설명

  • 레거시 코드 (테스트가 불가능하거나 어려운 코드)를 클린 코드로 만드는 방법.
  • 프로그램 외부 동작은 그대로, 내부 코드를 정리하며 개선.
  • 코드 가독성을 높이고, 향후 유지보수에 도움.

대상

  • 중복된 코드
  • 긴 메서드
  • switch case문. 중복이 생기므로.
  • 불필요한 주석
  • 조건문 단순화 - 조건 논리를 단순하고 명확하게 작성.
  • 데이터 구성 - 캡슐화 기법으로 데이터 접근 관리.
  • 객체 간 기능 이동 - 메소드 기능에 따른 위치 변경, 클래스 기능 명확히 구분
  • 메소드 호출 단순화 - 메소드 이름이나 목적이 맞지 않을 때 변경
  • 메소드 정리 - 그룹으로 묶을 수 있는 코드, 수식을 메소드로 변경

과정

  • 아키텍처 관점 시작 -> 디자인 패턴 적용 -> 단계적으로 하위 기능에 대한 변경

  • 버그 발생, 기능 변경 대비하여 회귀 테스트 진행

  • 코드 인스펙션 code inspection : 작성한 개발 소스 코드를 분석하여 개발 표준에 위배되었거나 잘못 작성한 부분 수정

  • 개발 과정에서 리팩토링은 개발 기간을 늘리게 될 수 있음. 완성된 코드에 대해 리팩토링 권장.


시큐어코딩

설명

  • 소프트웨어 개발 보안
  • 안전한 소프트웨어 개발을 위해 소스코드의 잠재적인 보안 취약점 제거.

방법

  • 도출 -> 설계 -> 구현(개발) -> 테스트 -> 릴리즈
  • 구현(개발) 단계에서 잠재적 보안 취약점 사전 제기, 발견.

사용 이유

  • 경제적 이점

보안 약점 사고

  • SQL 인젝션 취약점으로 개인 정보 유출 사고
  • URL 파라미터 조작 개인 정보 노출
  • 무작위 대입 공격 기프트카드 정보 유출

한 줄 요약

클린코드

  • 의도를 밝힐 수 있는 변수명, 메서드명 지정하여 최대한 단순하고 명확하게 코드를 통해 나타내는 방법

리팩토링

  • 완성된 기능 혹은 프로젝트의 외부 동작을 바꾸지 않고, 내부적 구조만 개선 및 변경하는 방법

시큐어코딩

  • 구현 단계에서 보안 취약점을 제기 및 발견하여 해킹 및 악의적 공격을 미연에 방지, 보안 약점 제거

레퍼런스

https://gyoogle.dev/blog/computer-science/software-engineering/Clean%20Code%20&%20Secure%20Coding.html

https://github.com/Songwonseok/CS-Study/blob/main/CommonSense/%ED%81%B4%EB%A6%B0%EC%BD%94%EB%93%9C%26%EB%A6%AC%ED%8C%A9%ED%86%A0%EB%A7%81%26%EC%8B%9C%ED%81%90%EC%96%B4%EC%BD%94%EB%94%A9.md

profile
노션에 1차 정리합니당 - https://cream-efraasia-f3c.notion.site/4fb02c0dc82e48358e67c61b7ce8ab36?v=

0개의 댓글