Skip to content

[BE] 코드 컨벤션

CHOI HYOJONG edited this page Oct 25, 2024 · 2 revisions

다음의 코드 컨벤션을 따라주시길 바랍니다!

변수명 및 함수명

자바스크립트 관습에 따라 변수 및 함수명은 camelCase로 작성합니다.

const userName = "John Doe";
const findUserById = (id) => { /* ... */ };



Mongoose 모델 정의

  • Mongoose 스키마는 별도의 models 디렉토리에 분리하여 정의
  • 스키마 정의 시, timestamps 옵션을 통해 자동으로 생성 및 수정 시간을 기록
const userSchema = new mongoose.Schema({
  username: { type: String, required: true },
  email: { type: String, required: true, unique: true },
  password: { type: String, required: true },
}, { timestamps: true });



비동기 코드 처리

  • Async/Await: 비동기 코드를 작성할 때 async/await 패턴을 사용하여 콜백 지옥을 방지하고, 에러 처리를 위해 try/catch 블록을 사용
  • Promise는 then과 catch를 남용하게 되면 중첩된 체이닝 문제가 생길 수 있음
const getUser = async (req, res) => {
  try {
    const user = await User.findById(req.params.id);
    if (!user) return res.status(404).send('User not found');
    res.status(200).json(user);
  } catch (error) {
    res.status(500).send('Server error');
  }
};



환경 변수 관리

dotenv를 사용하여 민감한 정보를 .env 파일에 저장합니다. 중요한 정보를 하드코딩하지 않도록 주의하고, .env 파일은 .gitignore에 추가합니다.

require('dotenv').config();

const dbConnection = process.env.DB_CONNECTION_STRING;
mongoose.connect(dbConnection, { useNewUrlParser: true, useUnifiedTopology: true });



코드 문서화 (리팩토링 하면서 정리)

JSDoc: 코드에 대한 설명을 제공하기 위해 JSDoc을 사용합니다. 이를 통해 함수, 매개변수, 반환값 등을 문서화합니다.

/**
 * Find a user by ID
 * @param {string} id - The user ID
 * @returns {Promise<User>} - Returns a promise that resolves to a User object
 */
const findUserById = async (id) => {
  return await User.findById(id);
};