본 게시글은 책 클린코드와 클린코드 타입스크립트 을 정리한 내용입니다
주석 없이도 아래와 같은 질문에 모두 답해야한다.
// 시간 혹은 날짜
let d // 시간, 날짜라는 느낌이 안든다.
let elapsedTimeInDays
let daysSinceCreation
let daysSinceModificaton
let fileAgeInDays
function getTheme() {
const list = []
for (const x of theList) {
if (x[0] === 4) list.push(x)
}
return list
}
function getFlaggedCells() {
const flaggedCells = []
for (const cell of gameBoard) {
if (cell[STATUS_VALUE] === FLAGGED) flaggedCells.push(cell)
}
return flaggedCells
}
productData
와 productInfo
는 개념을 구분하지 안흔 채 이름만 달리한 경우이다.d
라는 변수명을 사용했을 경우에는 찾기 힘들다. Customer, Account, AddressParser
등Manager, Processor, Data, Info
등과 같은 단어는 피하자postPayment, deletePage, save
등fetch, retrieve, get
으로 제각각 부르면 혼란스럽다.firstName, lastName, street, houseNumber, city, state, zipcode
addr
라는 접두어를 추가해 addrFirstName, addrLastName
과 같이 쓰면 주소
라는 의미를 추가해주어 맥락이 더 분명해진다.type Car = {
carMake: string
carModel: string
carColor: string
}
function print(car: Car): void {
console.log(`${car.carMake} ${car.carModel} (${car.carColor})`)
}
type Car = {
make: string
model: string
color: string
}
function print(car: Car): void {
console.log(`${car.make} ${car.model} (${car.color})`)
}
function loadPages(count?: number) {
const loadCount = count !== undefined ? count : 10
// ...
}
function loadPages(count: number = 10) {
// ...
}
const GENRE = {
ROMANTIC: 'romantic',
DRAMA: 'drama',
COMEDY: 'comedy',
DOCUMENTARY: 'documentary',
}
projector.configureFilm(GENRE.COMEDY)
class Projector {
// Projector의 선언
configureFilm(genre) {
switch (genre) {
case GENRE.ROMANTIC:
// 실행되어야 하는 로직
}
}
}
enum GENRE {
ROMANTIC,
DRAMA,
COMEDY,
DOCUMENTARY,
}
projector.configureFilm(GENRE.COMEDY)
class Projector {
// Projector의 선언
configureFilm(genre) {
switch (genre) {
case GENRE.ROMANTIC:
// 실행되어야 하는 로직
}
}
}