code: func BuildFQName(namespace, subsystem, name string) string {
  	if name == "" {
  		return ""
  	}
  	switch {
  	case namespace != "" && subsystem != "":
  		return strings.Join([]string{namespace, subsystem, name}, "_")
  	case namespace != "":
  		return strings.Join([]string{namespace, name}, "_")
  	case subsystem != "":
  		return strings.Join([]string{subsystem, name}, "_")
  	}
  	return name
  }
docs: // BuildFQName joins the given three name components by "_". Empty name
  // components are ignored. If the name parameter itself is empty, an empty
  // string is returned, no matter what. Metric implementations included in this
  // library use this function internally to generate the fully-qualified metric
  // name from the name component in their Opts. Users of the library will only
  // need this function if they implement their own Metric or instantiate a Desc
  // (with NewDesc) directly.