5.1. 함수, 왜 있는걸까?

자, 이제 모든 언어의 꽃이라고 할 수 있는 함수까지 왔습니다. 이때까지 저희는 변수, 조건문, 반복문과 함께 모든 프로그래밍 로직을 설계하고 작성할 수 있게 되었습니다. 이론적으로는 말이죠.

물론, 아예 불가능하다는 말은 결코 아닙니다. 실제로 이 지식만을 가지고 여러분들은 지금 당장 모든 서비스들을 만들 수 있습니다! 다만 시간이 엄청 오래 걸리겠죠.

왜 그럴까요? 아래의 코드를 보면서 설명해봅시다.

.
.
.
.
let status = true;
let msg = "";

try {
  req.body.writer_id = await verifyToken(req.cookies.sessionId);
  req.body.timestamp = mysql.raw("now()");

  console.log(req.body);
  const query = `INSERT INTO questions SET ?`;
  const result = await testdb.changeQuery(query, req.body);

  status = true;
  msg = result.insertId;
} catch (e) {
  msg = e.message;
}

res.status(200).json({
    status: status,
    msg: msg,
});

if (!req.cookies.sessionId) {
  msg = "sessionId is not exist";
} else {
  res.clearCookie("sessionId");
  status = true;
  msg = "logout success";
}

res.status(200).json({
    status: status,
    msg: msg,
});

try {
  req.body.writer_id = await verifyToken(req.cookies.sessionId);
  req.body.timestamp = mysql.raw("now()");

  console.log(req.body);
  const query = `INSERT INTO questions SET ?`;
  const result = await testdb.changeQuery(query, req.body);

  status = true;
  msg = result.insertId;
} catch (e) {
  msg = e.message;
}

if (!req.cookies.sessionId) {
  msg = "sessionId is not exist";
} else {
  res.clearCookie("sessionId");
  status = true;
  msg = "logout success";
}

res.status(200).json({
    status: status,
    msg: msg,
});

console.log(res);

보기만 해도 숨이 턱 막히는 63줄의 javascript 코드입니다.. 뭐가 어떻게 흘러가는지 눈에 보이지도 않네요...

혹시, 위 코드에서 무언가 규칙이 보이시지 않으신가요? 어떤 특정한 코드들이 반복해서 실행되고 있는 모습이 보입니다!

분명 저번 시간에 배웠죠. "프로그래밍 언어는 반복을 싫어한다"...

어쩌면 이것들도 간단히 줄일 수 있을 것만 같은데, 이때까지 배운 조건문, 반복문으로는 도저히 방법이 떠오르질 않는군요...

여기서! 함수를 사용하게 된다면 어떻게 될까요?