我不是一个专业的程序员,本身英语也不好。所以我在写代码的时候常常苦于不知如何对变量命名。我在上家公司的时候看过一个开发写的代码,里面变量命名非常混乱,存在大量字母+拼音+各种看不懂的随机数字组合的变量名,类似a1,a2这种变量名。我记得他离职之后新来了一个开发,看到他的代码之后给领导提了离职,最后领导再三挽留才留下,不过代价就是他说要给3个月时间把之前哥们写的代码重构一下。
看到这里,我想问题已经很清晰了,不规范的代码命名方式会给团队包括自己带来很多负面影响,例如以下影响:
-
阅读困难:可读性会很差,比如上面的a1,a2,这种变量加上没有注释,在屎山代码中会变得非常难以阅读;
-
难以维护: 当代码库增长或需要修改时,不规范的命名会增加理解和修改代码的复杂性。
-
容易引入错误: 如果命名不清晰,开发人员可能会误解代码的功能,从而更容易引入错误。
-
沟通障碍: 不规范的命名方式会增加团队成员之间的沟通成本。你可能需要花更多时间解释代码的功能或结构。
-
代码审查困难: 不明确的命名会让代码审查过程变得更为复杂和耗时。
-
上手难度大: 新加入项目的开发人员需要花费更多时间来理解不规范命名的代码。
-
文档不足: 如果代码命名不规范,即使没有足够的文档,也很难理解代码的功能。
-
难以识别功能: 如果函数、变量或类的名字不能准确描述其功能,其他开发人员可能会很难识别出可以重用的代码部分。
-
不易于扩展: 如果代码的命名不清晰,将来如果需要扩展功能或进行重构,可能会面临更多的困难。
基于这些影响,我之前在网上找到了一款alfred的workflow,只需要输入不同代码命名方式的缩写:
- xt:小驼峰;
- dt:大驼峰;
- xh:下划线;
- zh:中划线;
- cl:常量;
便可直接输出按规范命名方式输出的变量名,但是这个项目最近用不了了,作者也没有再维护了,我在项目的issues中提交了很多issues也无人回复,无奈之下只能自己写一款workflow来满足自己的工作需要了。
因为原项目是用nodejs写的,我本人是不会写nodejs的,所以我还是决定用python来写,毕竟这个我稍微熟悉一些。
代码逻辑
整个代码逻辑非常简单,就是将有道翻译的返回结果通过一定的规则进行转换后输出,有道翻译的API返回结构如下:
{
"returnPhrase":[
"测试"
],
"query":"测试",
"errorCode":"0",
"l":"zh-CHS2en",
"tSpeakUrl":"https://openapi.youdao.com/ttsapi?q=test&langType=en-USA&sign=F669024210C321BF64FBE625EE260D78&salt=1693066207456&voice=4&format=mp3&appKey=0494065eddef86d0&ttsVoiceStrict=false&osType=api",
"web":[
{
"value":[
"Test",
"TST test",
"Beta",
"testing",
"test"
],
"key":"测试"
},
{
"value":[
"Unit testing",
"Junit",
"unit system acceptance testing",
"PHPUnit"
],
"key":"单元测试"
},
{
"value":[
"software testing",
"BTEST",
"Ron Patton",
"What is SoftWare Test"
],
"key":"软件测试"
}
],
"requestId":"da296e0c-28b6-4d75-a28c-76c1b38c29eb",
"translation":[
"test"
],
"mTerminalDict":{
"url":"https://m.youdao.com/m/result?lang=zh-CHS&word=%E6%B5%8B%E8%AF%95"
},
"dict":{
"url":"yddict://m.youdao.com/dict?le=eng&q=%E6%B5%8B%E8%AF%95"
},
"webdict":{
"url":"http://mobile.youdao.com/dict?le=eng&q=%E6%B5%8B%E8%AF%95"
},
"basic":{
"phonetic":"cè shì",
"explains":[
"[试验] test",
"measurement"
]
},
"isWord":true,
"speakUrl":"https://openapi.youdao.com/ttsapi?q=%E6%B5%8B%E8%AF%95&langType=zh-CHS&sign=53FB8EC8BCAF93F4C4D377F07A5906CF&salt=1693066207456&voice=4&format=mp3&appKey=0494065eddef86d0&ttsVoiceStrict=false&osType=api"
}
我们把其中translation的返回作为标准翻译,web的返回作为网络翻译然后进行解析成一个python list,然后对这个list进行一定的数据处理,比如去除中间的is,a,and之类的词汇,这个在代码中主要是通过filter
来进行过滤的。
比如上面返回的unit system acceptance testing
,经过小驼峰转换之后为unitSystemAcceptance
。这就是整个项目的逻辑。
依赖
- Alfred4;
- Python3;
- request;
- 有道API:
我仅在alfred4上进行了测试;本机开发python版本为3.9;
项目地址
项目地址:https://github.com/daniellauyu/pyCodevar
直接下载项目中的PyCodeVar.alfredworkflow
,然后在本机导入即可。
有道API申请
有道API申请地址:https://ai.youdao.com/console/#/service-singleton/text-translation
直接注册好后创建即可,需要在文本翻译中创建应用,需要生成应用ID与应用秘钥;
使用方法
- 下载好workflow并导入alfred,在全局变量中填入有道API申请的ID与秘钥;
- 点击导入就导入成功了;
使用效果
- 默认未输入;
- 小驼峰命名法;
- 大驼峰命名法;
- 常量命名法;
- 下划线命名法;
- 中划线命名法;
后记
文章的最后,本项目大量代码使用chatGPT4来进行研发的,感兴趣的可以阅读源码,属于我本人手写的代码很少。另外在写alfred-workflow的过程中,我也遇到了一些困难,比如alfred官方的那个库20年之后就再没更新了,我用那个库来开发一直报错,因为我电脑中已经没有python2了。最后在github中找到了一些最近用python3开发的workflow,于是我照着别人的代码改了之后成功了。
alfred属于是mac中的效率神器了,现在有了GPT4的加持,我相信更多的非专业人士也能实现自己的alfred效率插件自由了。
评论区