클린 코드, 의미있는 이름

ppby·2021년 9월 7일
0

ppby.TIL

목록 보기
20/26
post-thumbnail

책의 예시들을 typescript로 작성하였습니다. 의미가 안 맞을 수 있지만 최대한 비슷한 느낌으로 작성하려 노력했습니다🥺


1. 나쁜 코드의 예시

  • 성능이 나쁜 코드 : 불필요한 연산이 들어가서 개선의 여지가 있는 코드
  • 의미가 모호한 코드 : 이해하기 어려운 코드 네이밍과 그 내용이 다른 코드
  • 중복된 코드 : 비슷한 내용인데 중복되는 코드들은 버그를 낳는다.

나쁜 코드가 안 좋은 이유?

생산성 저하

  • 나쁜 코드는 팀 생산성을 저하시킨다.
  • 기술부채를 만들어 수정을 더 어렵게 한다.
  • 새로운 시스템을 만들어야 한다.
    - 현 시스템을 유지보수하며 대체할 새로운 시스템 개발은 현실적으로 매우 어렵다. 레거시와의 싸움

그럼 나쁜 코드를 짜는 이유?

일정이 촉박해서😭

  • 일정 안에 새로운 기능을 완성해야 한다.
  • 하지만! 나쁜 코드는 생산성을 저하하기 때문에 오히려 일정을 못 맞춘다... 어쩐지ㅜ

영향 범위가 넓어서

  • side effect를 초례할까봐🥺
  • 하지만! 기술부채는 부메랑처럼 돌아온다. 젠장😡

2. 그렇다면 클린코드는?

키워드만 뽑자면~

  • 논리가 간단
  • 의존성 최대한 줄임
  • 의미가 명확한 코드 = 가독성이 좋은 코드
  • 성능이 좋은 코드
  • 한가지에 집중
  • 중복이 제거된 코드
    ...

3. 의미 있는 이름 짖기

변수명

안 좋은 예시

let a: number;
let b: string;

...

console.log(`User Requested ${b}. count = ${a}`);

/* console output */
// User Requested book. count = 3
  • 결과물이 나와야 어떤 변수인지 알 수 있다 → 👎

좋은 예시

let itemCount: number;
let itemName: string;

...

console.log(`User Requested ${b}. count = ${a}`);

/* console output */
// User Requested book. count = 3
  • 구체적인 내용을 넣어서 변수명 작성 → 👍

루프

루프 속 i,j,k 사용하지 않기

  • 내장 함수를 사용
  • 만약 사용한다면 i,j,k 대신 맥락에 맞는 이름 사용
    - row, col / width, height / row, col, depth

변수명에 타입 넣지 않기

/* 💩 */

let nameString: string  // name
let itemPriceAmount: number  // itemPrice
let accountArray: Account[] // accounts

interface IShapeFactory // ShapeFactory

/* 🤔 */

class ShapeFactoryImpl // CircleFactory -> interface로 어떤 걸 구현할지 작성하는 쪽이 더 좋음

Class Naming Guide

UpperCammelCase (대문자로 시작)

// 클래스는 명사, 명사구
class Character
class ImmutableList
  
// 인터페이스는 명사, 명사구, (형용사)
interface List 
interface Readable

Method Naming Guide

lowerCammelCase (소문자로 시작)

// 메서드는 동사, 동사구
sendMessage() {}
stop() {}
profile
(ง •̀_•́)ง 

0개의 댓글