You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将双常量生成CCENTERURL的逻辑重构为统一单函数

极简适配版(完全匹配当前业务逻辑,仅保留1个函数)

直接合并原有判断逻辑和拼接逻辑到同一个函数中,调用时无需额外写if分支:

/**
 * 根据收件人邮箱获取对应ccenter跳转链接
 * @param {string} recipientEmail 收件人邮箱
 * @param {string | number} ticketID zendesk工单ID
 * @returns {string} 最终跳转链接
 */
function getCcenterUrl(recipientEmail, ticketID) {
  const baseUrl = recipientEmail.indexOf('.com') > 0
    ? `${HOSTURL}.com/ccenter/zendesk/landing/`
    : `${HOSTURL_AT}/ccenter/zendesk/landing/`
  return baseUrl + ticketID
}

// 业务侧调用直接一行完成,无需额外判断
const cCenterUrl = getCcenterUrl(data.ticket.recipient, zendeskID)

原来的两个常量、两个工具函数、业务侧的if判断分支都可以删掉,整体代码精简60%以上。


易扩展优化版(适合后续可能新增其他地区域名的场景)

用配置映射表统一管理不同域名对应的基础链接,后续新增规则无需修改函数逻辑,仅需新增配置即可:

// 统一管理顶级域名和对应基础链接的映射
const CCENTER_BASE_URL_CONFIG = {
  '.com': `${HOSTURL}.com/ccenter/zendesk/landing/`,
  '.at': `${HOSTURL_AT}/ccenter/zendesk/landing/`
  // 后续新增其他地区域名直接在这里加配置即可,比如 '.jp': 'xxx'
}

function getCcenterUrl(recipientEmail, ticketID) {
  // 匹配邮箱对应的域名规则
  const matchedSuffix = Object.keys(CCENTER_BASE_URL_CONFIG).find(suffix => recipientEmail.includes(suffix))
  // 可自定义兜底规则,这里默认用.com的链接
  const baseUrl = matchedSuffix ? CCENTER_BASE_URL_CONFIG[matchedSuffix] : CCENTER_BASE_URL_CONFIG['.com']
  return baseUrl + ticketID
}

// 调用方式和极简版完全一致
const cCenterUrl = getCcenterUrl(data.ticket.recipient, zendeskID)

优化收益

  • 消除冗余重复代码,整体逻辑更聚合,维护成本更低
  • 业务侧无需感知判断逻辑,调用更简洁,降低分支写错的风险
  • 扩展版的配置和逻辑分离,后续迭代效率更高,也便于统一做基础链接的修改

内容的提问来源于stack exchange,提问作者cbln

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:06:04