반응형
전체 글

전체 글

    6. 명확하고 간결한 주석 달기

    6. 명확하고 간결한 주석 달기

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 주석을 간결하게 하라 // **bad** //int는 CategoryType이다. //내부 페어의 첫 번째 float은 'score'다 //두 번째는 'weight'이다. typedef hash_map ScoreMap; // ---------------------------- // **good** // CategoryType -> (score, weight) typedef hash_map ScoreMap; 2. 모호한 대명사를 피하라 -> 'it', 'that', 'this'를 피하고, 명확한 대상을 적어라 3. 엉터리 문장을 다듬어라 -> 안좋은 예: "이 ..

    5. 주석에 담아야 하는 대상

    5. 주석에 담아야 하는 대상

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 설명하지 말아야 하는 것 -> 코드에서 빠르게 유추할 수 있는 내용은 주석으로 달지 않는다. -> 주석을 달 때는 실제 주석이 도움될지를 고민해보고 달아라. -> 이름이 애매하다면 주석으로 설명할 것이 아니라, 이름 자체를 수정해야한다. -> 좋은 코드 > 나쁜 코드 + 주석 2. 생각을 기록하라 -> 코드를 짜면서 얻게된 중요한 통찰을 주석으로 기록하여, 읽는이가 헷갈리지 않도록 하라 TODO 해야할 일 FIXME 오동작을 일으킨다고 알려진 코드 HACK 좋지 않은 해결책 XXX 위험! TestMate ESC -> 상수에도 주석을 붙이면 의미가 더 뚜렷해진다..

    4. 미학

    4. 미학

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 일관성과 간결성을 위해 줄 바꿈을 재정렬하기 -> 줄바꿈/들여쓰기의 경우 일관되게 유지할 것. -> 동일한 형태의 함수가 반복될 경우 주석으로 파라미터의 형태를 보여주고 가는 것이 효과적이다. 2. 메소드를 활용하여 불규칙성을 정리 -> 반복적으로 사용되는 부분을 묶어서 또 다른 함수로 구현하고, 불규칙성을 내부에서 묶어 처리한다. -> 중복된 코드를 없앨 수 있고, 새로운 테스트 추가가 쉬워진다. 3. 도움이 된다면 코드의 열을 맞추기 -> 파라미터의 길이에 따라 열을 정하고, 그에 맞춘다. -> 각 파라미터를 더욱 쉽게 구별할 수 있고, 오타의 버그를 줄일..

    3. 오해할 수 없는 이름들

    3. 오해할 수 없는 이름들

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. Filter(): 거른 결과를 반환할지, 나머지 살아있는 것들을 반환할지 애매함. -> 골라내는 기능일 경우: Select() -> 제거하는 기능일 경우: Exclude() 2. Clip(): 문자열을 잘라낸다. 앞에서부터 잘라내는가? 뒤에서부터 잘라내는가? -> 앞에서부터: Truncate() -> 뒤에서부터: Reverse_Truncate()? 3. 경계를 포함하는 한계값: Max & Min 을 붙여 사용한다. 4. 경계를 포함하는 범위값: First & Last 로 사용한다. 5. 경계를 포함하고 / 배제하는 범위값: Begin & End 로 사용한다. ..

    2. 이름에 정보를 담아내라

    2. 이름에 정보를 담아내라

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 특정한 단어 고르기: 구체적인 단어를 통해 무의미한 단어 피하기 -> 유의어 색인집을 찾는 것, 동료에게 물어보는 것이 좋다. 2. tmp나 retval같은 보편적인 이름 피하기: 개체의 값이나 목적을 정확하게 설명한 이름을 사용 -> 변수의 이름은 변수의 목적이나 담고 있는 값을 설명해주어야 한다. -> i,j,k라는 뻔한 루프 반복자보다 club_i, members_i, users_i 같은 의미를 담은 반복자가 낫다. -> tmp, it, retval을 사용할 경우, 꼭 그렇게 하는 이유가 있어야 한다. -> tmp: 대상이 용도가 오직 임시적으로 존재하는..

    [React.js] create-react-app vulnerabilities / CRA 버전 취약 오류

    [React.js] create-react-app vulnerabilities / CRA 버전 취약 오류

    저번에 개인프로젝트를 새로 시작하려고 했었는데, create-react-app을 했더니 audit에서 vulnerability들이 어마무시하게 떴다. 그래서 node.js를 재설치만 하고 다른 일한다고 까먹고 있었는데, 이번에 대회를 준비하다보니 또 같은 오류가 발생했다. 올해 초에 개인프로젝트를 할 때는 이런게 없었는데, 문제를 찾기 위해 몇 시간을 썼다. node.js는 다섯번 정도 재설치 한 것 같고, 컴퓨터 내 모든 node_modules 검색해서 확인하고 관련 데이터를 거의 전부 지웠다. react-scripts도 여러번 재설치하고, yarn, npm 전부 지웠다가 다시 깔고, 재부팅도 여러번.. 근데 그래도 해결이 안되서 스트레스 풀로 받고 있던 도중에, 생각보다 너무 쉬운 결론을 찾을 수 있..

    [React.js] 리액트 useEffect 기본 사용

    [React.js] 리액트 useEffect 기본 사용

    useEffect는 리액트의 함수형 컴포넌트에서 컴포넌트의 마운트 시(생성시), 마운트 해제 시(삭제시), 업데이트 시에 특정 로직을 실행될 수 있도록 하는데 사용한다. 클래스형 컴포넌트의 componentDidMount, componentWillUnmount, componentDidUpdate를 한번에 사용가능하도록 해주는 것이다. useEffect의 경우 다음과 같은 형태로 구현된다. useEffect(() => { 내부 로직 return () => {cleanup 함수} }, deps) 내부 로직은 말 그대로 조건에 맞는 상황에서 실행될 로직을 의미하며, return의 경우 cleanup 함수이다. deps의 경우 useEffect가 실행되는 기준이 될 값들의 배열을 의미한다. 조건문을 사용하여 좀..

    [React.js] 리액트 useRef

    [React.js] 리액트 useRef

    useRef 함수는 리액트의 함수형 컴포넌트에서 사용하는 Hook의 한 종류로, 기본적으로 두 가지 기능을 가지고 있다. 1. 특정 DOM을 선택하여 저장 2. state와 관련없는 변수 저장 1. 특정 DOM을 선택하여 저장 특정 DOM 선택 기능은 보통 어떤 DOM element를 선택해 해당 element의 스크롤, 사이즈, 온 포커스 기능 등을 구현하기 위해 사용된다. import React, { useState, useRef } from "react"; function InputSample() { const [inputs, setInputs] = useState({ name: '', nickname: '' }); const nameInput = useRef(); // input element를 ..

    [React.js] 리액트 JSX

    [React.js] 리액트 JSX

    JSX란 리액트 컴포넌트에서 XML 형식의 값을 반환해주는 것을 의미한다. JSX의 동작 방식은, 리액트 컴포넌트 파일에서 XML 형태로 코드를 작성하면 Babel이 JSX를 Javascript로 변환해준다. Babel: 자바스크립트의 문법을 확장해주는 도구. 아직 지원되지 않은 최신 문법이나, 편의상 사용하거나 실험적인 자바스크립트 문법들을 정식 자바스크립트 형태로 변환해줌으로서 구형 브라우저같은 환경에서도 제대로 실행할 수 있도록 해준다. 1. 태그는 꼭 닫혀있어야 한다. => 태그가 있으면 반드시 태그가 존재할 것, 혹은 self closing 태그를 사용할 것. 2. 두 개 이상의 태그는 무조건 하나의 태그로 감싸져야 한다. => 반드시 하나의 태그에서 시작된 트리 구조가 될 수 있도록 할 것. ..

    [리트코드] 809. Expressive Words / Javascript

    [리트코드] 809. Expressive Words / Javascript

    문제주소 : https://leetcode.com/problems/expressive-words/ Expressive Words - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 더보기 Sometimes people repeat letters to represent extra feeling. For example: "hello" -> "heeellooo" "hi" -> "hiiii" In these strings like "heeellooo", we have g..

반응형