首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >不好命名?试试这个工具

不好命名?试试这个工具

作者头像
一只牛博
发布2025-05-31 10:24:19
发布2025-05-31 10:24:19
1500
举报

拿来即用,随处执行,不需要任何环境,不管是mac本还是Windows的,而且使用到的翻译api不需要注册不需要花钱

前言

在软件开发过程中,命名是一个极为重要且充满挑战的任务。一个好的命名不仅能够提高代码的可读性,还能减少后期维护的复杂性。然而,对于很多开发者,特别是那些需要在多种语言之间切换的开发者,命名往往是一个头疼的问题。为了解决这个痛点,我们开发了一个简单而实用的命名工具,希望能够帮助大家在开发过程中更加轻松地处理命名问题。

为什么用

在实际开发中,我们经常会遇到需要将中文名称转换为英文名称的情况,特别是在变量名、类名等命名时。手动翻译和格式转换不仅费时费力,而且容易出错。因此,我们希望通过一个自动化的工具来简化这个过程,提高效率。

为什么使用go

选择Go语言来实现这个工具,主要有以下几个原因:

  1. 简单高效:Go语言的语法简单,学习曲线平缓,适合快速开发。
  2. 并发支持:Go语言内置对并发的支持,可以方便地处理并发任务。
  3. 跨平台:Go语言编译出来的可执行文件可以在多个平台上运行,这使得我们的工具可以在不同的操作系统上使用。
  4. 性能优越:Go语言编译出的二进制文件执行效率高,适合需要高性能的工具开发。

解决了什么痛点

  1. 命名困难:许多开发者在命名时会感到困惑,尤其是需要从中文翻译成英文并符合命名规范时。这个工具自动化了这一过程,大大降低了命名的难度。
  2. 时间浪费:手动翻译和格式转换不仅耗费大量时间,而且容易出错。我们的工具通过调用翻译API并自动转换格式,节省了开发者的时间。
  3. 一致性问题:不同开发者在命名时可能会有不同的习惯和风格,导致代码风格不一致。使用工具可以确保命名的一致性,提升代码质量。

关键代码

代码语言:javascript
复制
func main() {
	reader := bufio.NewReader(os.Stdin)
	for {
		// 提示用户输入
		fmt.Println("请输入翻译前缀和中文,例如:xt 项目管理")

		// 读取用户输入
		input, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("读取输入失败:", err)
			continue
		}

		// 去掉输入末尾的换行符
		input = strings.TrimSpace(input)
		parts := strings.SplitN(input, " ", 2)
		if len(parts) != 2 {
			fmt.Println("输入格式不正确,请输入前缀和中文短语,例如:xt 项目管理")
			continue
		}

		prefix, chinese := parts[0], parts[1]

		// 调用翻译API
		translations, err := translate(chinese)
		if err != nil {
			fmt.Println("翻译失败:", err)
			continue
		}

		// 清理HTML标签
		for i := range translations {
			translations[i] = cleanHTMLTags(translations[i])
		}

		// 如果有多个翻译结果,让用户选择一个
		selectedTranslation := translations[0]
		if len(translations) > 1 {
			fmt.Println("请选择一个翻译结果:")
			for i, translation := range translations {
				fmt.Printf("%d: %s\n", i+1, translation)
			}
			var choice int
			_, err := fmt.Scanln(&choice)
			if err != nil || choice < 1 || choice > len(translations) {
				fmt.Println("选择无效,默认使用第一个翻译结果")
			} else {
				selectedTranslation = translations[choice-1]
			}
		}

		var formatted string

		// 根据前缀进行格式化
		switch prefix {
		case "xt":
			formatted = toCamelCase(selectedTranslation)
		case "cl":
			formatted = toUpperCaseSnake(selectedTranslation)
		case "dt":
			formatted = toPascalCase(selectedTranslation)
		case "sq":
			formatted = toLowerCaseSnake(selectedTranslation)

		default:
			fmt.Println("无效的前缀")
			continue
		}

		// 复制到剪贴板
		err = clipboard.WriteAll(formatted)
		if err != nil {
			fmt.Println("无法复制到剪贴板:", err)
			continue
		}

		// 提示成功
		fmt.Println("翻译成功,结果已复制到剪贴板:", formatted)
	}
}

项目演示之小驼峰命名

iShot_2024-07-16_14.11.59.mp4 [视频转webp输出图片]
iShot_2024-07-16_14.11.59.mp4 [视频转webp输出图片]

项目演示之大驼峰命名

iShot_2024-07-16_14.17.22.mp4 [视频转 webp 输出图片]
iShot_2024-07-16_14.17.22.mp4 [视频转 webp 输出图片]

项目演示之常量命名

这里图片出现点问题,和上面演示是一样的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 为什么用
  • 为什么使用go
  • 解决了什么痛点
  • 关键代码
  • 项目演示之小驼峰命名
  • 项目演示之大驼峰命名
  • 项目演示之常量命名
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档