항상 당신의 기능을 댓글로..!!
어떤 것에 대해 댓글을 다는 것은 기본적으로 누군가가 무언가를 판단하거나 다른 관점을 제공하는 방법입니다. 그 과정에서 그것이 좋은지 나쁜지 여부에 관계없이 우리는 그것을 기반으로 개선할 것인지 아니면 그냥 무시할 것인지를 고려할 것입니다. 댓글에 따르면 우리에게 주어진 것.
하지만 이 게시물에서는 정치에 대해 이야기하지 않고 웹 개발에 대한 보다 기술적인 내용을 다룰 것입니다. 제 관점은 우리가 코드를 작성하는 동안 이 작업을 수행해야 하는 이유입니다.
이번 토론에서 우리는 물론 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;
결론
주어진 매개 변수가 매우 복잡 합니까? 또는 생성된 명명 함수 및 인수 에서 읽을 수 있습니까?
하지만 기능에 주석을 달 필요가 있다고 생각되면 다음 개발자(인간)가 쉽게 유지 관리할 수 있도록 하기 때문에 더 좋습니다.
감사합니다.