더 이상 함수 이름을 하드 코딩하지 마십시오.

저는 꽤 오랫동안 Javascript/typescript 및 Nodejs로 코딩해 왔으며 현재 실행 중인 함수의 이름을 문자열로 하드 코딩하는 것이 일반적이며 일반적으로 디버깅 중에 도움이 되도록 기록하는 것을 보았습니다.

때때로 이로 인해 몇 가지 문제가 발생할 수 있습니다. 함수 이름을 변경하면 문자열에 하드 코딩된 이전 함수 이름을 모두 찾아 교체하기 위해 코드를 기억하고 읽어야 합니다. 함수 이름 인스턴스를 바꾸는 것을 잊어버릴 수 있으며 그러면 로그에 잘못된 함수 이름이 기록됩니다.

다음 코드 블록을 살펴보십시오. 우리는 클래스와 함수 이름을 하드 코딩하고 있는 것을 볼 수 있습니다. 제 생각에는 그다지 좋아 보이지 않습니다.

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를 사용하면 현재 실행 중인 함수의 이름을 '컴파일 가능한' 방식으로 가져올 수 있도록 위에서 설명한 접근 방식을 사용해야 합니다. 컴파일러가 함수를 찾지 못하면 불평할 것이기 때문입니다.

이 접근 방식에 대한 생각이 있으면 아래에 설명하십시오.

좋은 웹페이지 즐겨찾기