不好命名?试试这个工具

欢迎来到我的博客,代码的世界里,每一行都是一个故事


在这里插入图片描述

🎏:你只管努力,剩下的交给时间

🏠 :小破站

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

前言

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

为什么用

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

为什么使用go

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

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

解决了什么痛点

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

关键代码

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.17.22.mp4 [视频转 webp 输出图片]

项目演示之常量命名

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

获取

如有需要可以关注下方公众号回复transition获取

ezgif-7-34ee1b78c3

相关推荐

  1. Playwright 这个强大的自动化测试工具

    2024-07-18 14:26:02       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 14:26:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 14:26:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 14:26:02       57 阅读
  4. Python语言-面向对象

    2024-07-18 14:26:02       68 阅读

热门阅读

  1. HOW - SVG 图标组件封装(Lucide React)

    2024-07-18 14:26:02       22 阅读
  2. Linux-快捷键以及vim工具使用

    2024-07-18 14:26:02       20 阅读
  3. Web前端-Web开发CSS基础3-盒模型

    2024-07-18 14:26:02       19 阅读
  4. C++ bind和placeholders

    2024-07-18 14:26:02       21 阅读
  5. 力扣LCR184.设计自助结算系统

    2024-07-18 14:26:02       19 阅读
  6. SpringBoot 实现整合kafka的简单使用

    2024-07-18 14:26:02       21 阅读
  7. 模乘逆元计算器

    2024-07-18 14:26:02       21 阅读