전체 글 527

함수

함수의 역할은 하나만 할 수 있도록 하자 (SRP) 함수의 역할이 많아진다면, 오류가 날 가능성이 커지고 가독성이 떨어집니다. 또한 함수에 대한 테스트를 진행하기가 어렵습니다. as-is function createUser(email, password){ // validation 로직 if (!(email.includes('@')) || password.length < 6){ throw new Error("유저 정보를 제대로 입력하세요") } user = {"email" : email, "password" : password} database = Database("mysql") database.add(user) email_client = EmailClient() email_client.setConfig(..

it 책/클린코드 2022.05.22

주석, 포맷팅

주석 대부분은 좋은 Naming으로 충분히 해결이 가능합니다. 법적인 정보를 담을 때 // Copyright (C) 2021 ... 의돌를 명확하게 설명할 때 # throughput을 늘리기 위해 스레드를 10개까지 늘린다. for(let idx = 0; i < 10; i++){ thread = threading.Thread(target=...) thread.start() ... } 중요성을 강조할 때 // 최종 결제를 하기 전에 진행해야 하는 validation 함수 function validate_buyable(wallet, price, ...){ ... } 결과를 경고할 때 // WARNING: API 서버가 항상 양호한지 알 수 없음. function connectApiServer(){ ... }..

it 책/클린코드 2022.05.21

2022-05-21 좋은 개발자란 무엇일까?

난 좋은 개발자가 되고 싶다. 하지만 좋은 개발자란게 무엇일까? 하나의 언어를 깊게 파서 그 언어에 정통한 개발자가 좋은 개발자인가? 아니면 여러 언어나 라이브러리를 얇고 넓게 익힌 개발자일까? 시간이 오래걸리더라도 좋은 품질의 코드를 만드는게 좋은 개발자일까? 아니면 절차지향적으로 코드를 작성하더라도 빠르게 완성하는 개발자가 좋은 개발자인가? 정해진 답이 없다라는 것은 알고 있다. 개인적으로 내가 되고 싶은 개발자는 주어진 문제를 해결하는 개발자이다. 당연한거 아닌가 하는 생각이 들 수 도 있겠지만 난 이게 중요하다고 생각한다. 내가 해결해야할 문제라면 프론트엔드든 백엔드든 다른 분야도 해결해야한다고 생각한다. 물론 지금이야 프론트엔드를 집중적으로 공부하고 있지만 취업을 하고 나서도 task를 바꾸시는..

일기 2022.05.21

[stash] 변경 사항을 커밋하기 보단 임시저장하고 싶어요

git stash git stash는 수정 내용을 임시 저장하는 명령어입니다. main 브랜치로부터 my-branch를 만들어 이 브랜치로 전환해서 작업하고 있었다고 합시다. 작업 도중 main브랜치로 전환해야 할 일이 생겼습니다. 이때 변경사항을 커밋흐로 남기기에는 아직 진행중이라 애매한 상황이라면 임시 저장을 하는 git stash를 활용하면됩니다. $ git stash Saved working directory and index state WIP on my-branch: b014111 a 파일을 추가한다 만약 메시지를 남기고 싶다면 -m 을 활용하면 됩니다. $ git stash -m "OOO 변경 사항..." 이제 main 브랜치로 전환할 수 있습니다. $ git switch main 'main'..

Git 2022.05.21

2022-05-20 습관의 힘

20대 초반부터 가지고 있던 습관이 있는데 그건 바로 하루에 한번씩 헬스장에 가는 것이다. 꼭 몇시간씩 운동을 하지 않아도 20~30분 런닝머신에서 걷는 것만 하더라도 말이다. 이러한 습관을 가지게 된 계기라고 한다면 아이러니하게도 120kg가 넘는 돼지였기 때문이였다. 살을 빼기로 마음 먹은 후 1달에 3kg씩 감량하자 라는 목표를 세웠다. 그 이유는 급격하게 살을 뺄 경우 살이 늘어지기 때문에 오히려 보기 흉해진다. 그리고 3kg를 30일로 나눠 보면 하루에 100g 이정도면 해볼만 하다고 생각했다. 그렇게 하루 이틀 한달 1년이 넘어 지금의 체중을 유지하고 그로 인해서 많은 것이 바꼈다. 가장 크게 바뀐 것은 자신감과 행동력이였다. 항상 의기소침하고 주변 어른들께 인사도 하지 않고 느릿느릿하게 행동..

일기 2022.05.20

newChat 리팩토링

기존의 코드 import axios from 'axios'; import styles from './newChat.module.css'; interface newChatType { roomsId: number; } const NewChat = ({ roomsId }: newChatType) => { const [chat, setChat] = useState(''); // 방의 아이디와 덧글을 포함하여 post합니다. const onSubmit = async (event: React.FormEvent) => { event.preventDefault(); if (chat !== '') { isCookie(); // chats에 입력한 값을 전해줍니다. } // input의 값을 초기화 합니다. setChat..

클린 코드(네이밍)

코딩을 하면서 이름을 지을 때 대표적인 컨벤션으로 snake_case , camelCase , pascalCase , kebab-case 4가지가 있습니다. snake_case: Python, Ruby 등에서 권장함 camelCase : Java, Javascript 등에서 권장함 PascalCase : 대부분의 프로그래밍 언어에서 클래스를 네이밍할 때 사용함 kebab-case: HTML Element를 표현할 때 사용함. 변수와 상수 일반적으로 변수와 상수를 네이밍할 때는 명사 혹은 형용사 구문 형태로 짓습니다. user_data = ... #명사 is_valid = ... #형용사 함수와 메서드 일반적으로 함수와 메서드를 네이밍할 때는 동사 혹은 형용사 구문 형태로 짓습니다. function sen..

it 책/클린코드 2022.05.20

7장 클래스

Array를 생성자 함수 new와 함께 호출하면 인스턴스가 생성됩니다. 이때 Array를 일종의 클래스라고 하면, Array의 prototype 객체 내부 요소들이 인스턴스에 상속된다고 볼 수 있습니다. 엄밀히 말하면 프로토 타입 체이닝에 의한 참조지만 인스턴스에 상속되는지 여부에 따라 스태틱 멤버와 인스턴스 멤버로 나뉩니다. 다른 클래스 기반 언어와 달리 자바스크립트에서는 인스턴스에서도 직접 메서드를 정의할 수 있기 때문에 ‘인스턴스 메서드’라는 명칭보다는 프로토 타입 메서드라고 부르는 편이 좋습니다. const Rectangle = function(width, height) { this.width = width this.height = height } Rectangle.prototype.getArea..

[restore & reset] 변경사항, 커밋을 초기화하고 싶어요

두개의 커밋이 있는 상황에서 우리는 a파일을 추가하고 커밋 시점으로 초기화하고 싶습니다. $ git log --oneline c008c47 a 파일을 수정한다 b014111 a 파일을 추가한다 이때 git reset명령어를 사용하면됩니다. git reset명령어는 아래와 같은 옵션을 가집니다. git reset --hard {커밋 ID} 특정 커밋 시점으로 돌아갈 때, 해당 커밋 이후 만들어진 모든 작업물을 삭제합니다. $ git reset --hard b014111 HEAD의 현재 위치는 b014111입니다 a 파일을 추가한다 $ git log --oneline b014111 a 파일을 추가한다 $ git status 현재 브랜치 main 커밋할 사항 없음, 작업 폴더 깨끗함 git reset --mi..

Git 2022.05.20

2022.05.19 면접후기

언제나 나의 100%를 전달할 수 없는건 정말 힘든일인것 같다. 사내의 분위기가 어떤지에 대해서 알아보고 싶어서 면접 시간보다 30분 일찍 회사에 도착했다. 단언컨데 내가 여태까지 봤던 그 어떤 회사보다도 분위기가 밝았다. 어떤 회사들은 타닥타닥 키보드 소리만 나는 회사들도 많은데 자유롭게 업무에 대해서 물어보고 웃고 떠드는 모습이 너무 좋았다. 면접이 시작될때쯤 구성분들중 두명이 나에게 다가와서 말을 걸어주셨다. 좀 더 일찍 왔다면 이야기할 기회가 더 있었을지도 모른다는 아쉬움이 남기도 했었다. (공차 같은데 있지말고 바로 가볼껄) 그리고 몇분 후 cto님 또 한 분의 개발자분께서 방에 들어와 면접이 시작되었다. 좀 더 나에 대해서 어필할 수 있는 점이 있었는데도 어필하지 못했던 것같다. 면접관님께서 ..

일기 2022.05.19