항상 당신의 기능을 댓글로..!!

Nov 26 2022
어떤 것에 대해 댓글을 다는 것은 기본적으로 누군가가 무언가를 판단하거나 다른 관점을 제공하는 방법입니다. 그 과정에서 그것이 좋은지 나쁜지 여부에 관계없이 우리는 그것을 기반으로 개선할 것인지 아니면 그냥 무시할 것인지를 고려할 것입니다. 댓글에 따르면 우리에게 주어진 것. 하지만 이 게시물에서는 정치에 대해 이야기하지 않고 웹 개발에 대한 보다 기술적인 내용을 다룰 것입니다. 제 관점은 우리가 코드를 작성하는 동안 이 작업을 수행해야 하는 이유입니다.
Unsplash에 있는 Ferenc Almasi의 사진

어떤 것에 대해 댓글을 다는 것은 기본적으로 누군가가 무언가를 판단하거나 다른 관점을 제공하는 방법입니다. 그 과정에서 그것이 좋은지 나쁜지 여부에 관계없이 우리는 그것을 기반으로 개선할 것인지 아니면 그냥 무시할 것인지를 고려할 것입니다. 댓글에 따르면 우리에게 주어진 것.

하지만 이 게시물에서는 정치에 대해 이야기하지 않고 웹 개발에 대한 보다 기술적인 내용을 다룰 것입니다. 제 관점은 우리가 코드를 작성하는 동안 이 작업을 수행해야 하는 이유입니다.

이번 토론에서 우리는 물론 JavaScript에서 우리가 직접 만든 함수에 대해 주석을 다는 것이 얼마나 중요한지 알게 될 것입니다. 다음과 같은 함수가 있다고 상상해 보십시오.

function setLocation(x, y) {
  window.location.href = `${x}://${y}`;
}

window.location.href = `${x}://${y}`;

인수에 대한 설명 `x``y`? 우리가 채울 것인지 `object`, `string`아니면 특별한 입력을 채울 수 있을지도 모릅니다. 다른 하나는 Typescript를 사용하는 것입니다. 유형 데이터 메커니즘은 런타임 또는 개발 중에 Typescript 자체에 의해 수행 되지만 JavaScript를 사용하는 것은 어떻습니까?

예, JavaScript(JS)에서 함수의 인수 데이터가 무엇이든 허용된다는 의미 로 IntelliSense 편집기`setLocation` 에 표시됩니다 .`any`

보시다시피 기본적으로 여기에는 2의 문제가 있습니다. Computer and a Human , 컴퓨터가 코드를 읽을 때 우리가 설정한 인수 이름에 관계없이 코드가 계속 실행되지만 Human 은 어떻습니까?

우리가 만든 함수는 다음 개발자(인간)가 이해하기 어려울 것입니다. 함수에 무엇을 보낼지 모르고 `setLocation`댓글을 남기면 다르기 때문입니다.

// args `x` with data type string, is a protocol
// args `y` with data type string, is a domain name
function setLocation(x, y) {
  window.location.href = `${x}://${y}`;
}

우리는 JSDoc 의 표준 에 따라 우리가 만든 함수에 대한 주석을 시도할 것입니다. 위의 주석을 다음과 같이 변경합니다.

/**
 * A function that can be executed on address bar browser
 * @param {string} x a host url
 * @param {string} y a domain url
 */
function setLocation(x, y) {
  window.location.href = `${x}://${y}`;
}

실제로 IntelliSense 는 사용자가 해당 함수를 사용하고자 할 때 해당 함수에서 무엇을 보내야 하는지 결정하는 데 도움을 줄 수 있지만 완전히 엄격하게 입력된 것은 아닙니다.

이는 특히 데이터 개체를 함수의 매개 변수로 보내야 하는 함수가 있는 경우 매우 유용합니다. 예를 들어 다음과 같은 함수가 있습니다.

/**
 * @param {object} fullName
 * @param {string} fullName.firstName your first name
 * @param {string} fullName.lastName your last name
 */
function overwriteData(fullName) {
  return {
    firstName: "Adib",
    lastName: "Firman",
    ...fullName
  };
}

일반적인 IntelliSense 와 마찬가지로 힌트를 제공하며 이 접근 방식에서 더 흥미로운 점은

위의 그림에서 우리는 IntelliSense 의 지시에 따라 데이터를 입력할 것입니다. 당연히 편집자로부터 힌트 를 얻을 것입니다 . 재미있죠?

다음 질문은 우리가 만든 모든 함수에 대해 언급해야 하느냐입니다. 물론 아닙니다. 이와 같은 함수의 예

const sum = (firstNum, secondNum) => firstNum + secondNum;

결론

주어진 매개 변수가 매우 복잡 합니까? 또는 생성된 명명 함수 및 인수 에서 읽을 수 있습니까?

하지만 기능에 주석을 달 필요가 있다고 생각되면 다음 개발자(인간)가 쉽게 유지 관리할 수 있도록 하기 때문에 더 좋습니다.

감사합니다.