더 이상 함수 이름을 하드 코딩하지 마십시오.
7779 단어 typescriptjavascriptnodelogs
때때로 이로 인해 몇 가지 문제가 발생할 수 있습니다. 함수 이름을 변경하면 문자열에 하드 코딩된 이전 함수 이름을 모두 찾아 교체하기 위해 코드를 기억하고 읽어야 합니다. 함수 이름 인스턴스를 바꾸는 것을 잊어버릴 수 있으며 그러면 로그에 잘못된 함수 이름이 기록됩니다.
다음 코드 블록을 살펴보십시오. 우리는 클래스와 함수 이름을 하드 코딩하고 있는 것을 볼 수 있습니다. 제 생각에는 그다지 좋아 보이지 않습니다.
import log4js from "log4js";
log4js.configure("./log-config.json");
class FunctionNameExample {
logger: log4js.Logger;
id: number;
constructor() {
this.logger = log4js.getLogger("FunctionNameExample");
}
getId() {
this.logger.trace("[getId]");
return this.id;
}
processTransaction(tx: any) {
this.logger.trace("[processTransaction]");
if(!tx) {
this.logger.warn(`[processTransaction] no tx was provided`);
}
}
}
따라서 더 나은 해결책은 클래스와 함수 자체에 포함된 클래스와 함수
name
를 사용하는 것입니다.이름을 하드 코딩하는 대신 클래스 및 기능
name
속성을 사용하는 다음 코드 블록을 살펴보십시오.import log4js from "log4js";
log4js.configure("./log-config.json");
class FunctionNameExample {
logger: log4js.Logger;
id: number;
constructor() {
this.logger = log4js.getLogger(FunctionNameExample.name); // now using the .name property that the class has.
}
getId() {
this.logger.trace(this.getId.name); // now using the .name property that the function has.
return this.id;
}
processTransaction(tx: string) {
const functionName = this.processTransaction.name;
this.logger.trace(this.processTransaction.name);
if (!tx) {
this.logger.warn(`[${functionName}] no tx was provided`);
}
}
}
이것이 더 나은 해결책이라고 생각합니다. 함수 이름을 변경하면 컴파일러는 정의되지 않은 함수의 사용이 있다고 불평하므로 해당 함수를 찾고 즉시 교체하는 데 도움이 됩니다.
예를 들어 함수 이름을
processTransaction
에서 processTheTransaction
로 변경한 후 컴파일러는 문제를 찾아야 하는 위치를 정확히 알려줍니다.전역 __FUNCTION__ 값이 있는 PHP와 같이 현재 실행 중인 함수의 이름을 쉽게 얻을 수 있는 다른 방법이 있는 다른 프로그래밍 언어가 있습니다.
function test() {
echo __FUNCTION__;
}
Javascript를 사용하면 현재 실행 중인 함수의 이름을 '컴파일 가능한' 방식으로 가져올 수 있도록 위에서 설명한 접근 방식을 사용해야 합니다. 컴파일러가 함수를 찾지 못하면 불평할 것이기 때문입니다.
이 접근 방식에 대한 생각이 있으면 아래에 설명하십시오.
Reference
이 문제에 관하여(더 이상 함수 이름을 하드 코딩하지 마십시오.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jeremythen/dont-hard-code-a-function-name-anymore-40jm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)