目 录CONTENT

文章目录

我用GPT-4开发了一款Alfred Workflow:从此变量命名不是事!

慧行说
2023-08-27 / 11 评论 / 0 点赞 / 4,064 阅读 / 1,734 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-10-31,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

我不是一个专业的程序员,本身英语也不好。所以我在写代码的时候常常苦于不知如何对变量命名。我在上家公司的时候看过一个开发写的代码,里面变量命名非常混乱,存在大量字母+拼音+各种看不懂的随机数字组合的变量名,类似a1,a2这种变量名。我记得他离职之后新来了一个开发,看到他的代码之后给领导提了离职,最后领导再三挽留才留下,不过代价就是他说要给3个月时间把之前哥们写的代码重构一下。

看到这里,我想问题已经很清晰了,不规范的代码命名方式会给团队包括自己带来很多负面影响,例如以下影响:

  • 阅读困难:可读性会很差,比如上面的a1,a2,这种变量加上没有注释,在屎山代码中会变得非常难以阅读;

  • 难以维护: 当代码库增长或需要修改时,不规范的命名会增加理解和修改代码的复杂性。

  • 容易引入错误: 如果命名不清晰,开发人员可能会误解代码的功能,从而更容易引入错误。

  • 沟通障碍: 不规范的命名方式会增加团队成员之间的沟通成本。你可能需要花更多时间解释代码的功能或结构。

  • 代码审查困难: 不明确的命名会让代码审查过程变得更为复杂和耗时。

  • 上手难度大: 新加入项目的开发人员需要花费更多时间来理解不规范命名的代码。

  • 文档不足: 如果代码命名不规范,即使没有足够的文档,也很难理解代码的功能。

  • 难以识别功能: 如果函数、变量或类的名字不能准确描述其功能,其他开发人员可能会很难识别出可以重用的代码部分。

  • 不易于扩展: 如果代码的命名不清晰,将来如果需要扩展功能或进行重构,可能会面临更多的困难。

基于这些影响,我之前在网上找到了一款alfred的workflow,只需要输入不同代码命名方式的缩写:

  • xt:小驼峰;
  • dt:大驼峰;
  • xh:下划线;
  • zh:中划线;
  • cl:常量;

便可直接输出按规范命名方式输出的变量名,但是这个项目最近用不了了,作者也没有再维护了,我在项目的issues中提交了很多issues也无人回复,无奈之下只能自己写一款workflow来满足自己的工作需要了。

因为原项目是用nodejs写的,我本人是不会写nodejs的,所以我还是决定用python来写,毕竟这个我稍微熟悉一些。

代码逻辑

image-20230827153417583

整个代码逻辑非常简单,就是将有道翻译的返回结果通过一定的规则进行转换后输出,有道翻译的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,然后在本机导入即可。

image-20230827154633850

有道API申请

有道API申请地址:https://ai.youdao.com/console/#/service-singleton/text-translation

image-20230827154812659

直接注册好后创建即可,需要在文本翻译中创建应用,需要生成应用ID与应用秘钥;

使用方法

  • 下载好workflow并导入alfred,在全局变量中填入有道API申请的ID与秘钥;

image-20230827155055613

  • 点击导入就导入成功了;

使用效果

  • 默认未输入;

image-20230827155216017

  • 小驼峰命名法;

image-20230827155240284

  • 大驼峰命名法;

image-20230827155310869

  • 常量命名法;

image-20230827155408067

  • 下划线命名法;

image-20230827155436859

  • 中划线命名法;

image-20230827155503461

后记

文章的最后,本项目大量代码使用chatGPT4来进行研发的,感兴趣的可以阅读源码,属于我本人手写的代码很少。另外在写alfred-workflow的过程中,我也遇到了一些困难,比如alfred官方的那个库20年之后就再没更新了,我用那个库来开发一直报错,因为我电脑中已经没有python2了。最后在github中找到了一些最近用python3开发的workflow,于是我照着别人的代码改了之后成功了。

alfred属于是mac中的效率神器了,现在有了GPT4的加持,我相信更多的非专业人士也能实现自己的alfred效率插件自由了。

参考资料

0

评论区