mozillazg / go-pinyin

汉字转拼音
https://godoc.org/github.com/mozillazg/go-pinyin
MIT License
1.62k stars 195 forks source link

基于范例的“拼音风格”命令行选项 #19

Closed wdscxsj closed 7 years ago

wdscxsj commented 7 years ago

实用工具pinyin目前直接采用源代码定义的拼音风格名作为命令行选项,似乎存在以下问题:

如果仅作为第三方库给悲催的程序员调用,以上问题(除了代码维护)似乎也无所谓。但既然提供了命令行工具,个人倾向于对用户更温柔些。

在此建议改用基于范例的风格选项,好处是:容易拼写,也容易记忆;用户注意力集中到问题域,不容易写错;隐藏了实现方式,利于代码维护;容易基于现有代码修改,不易改错。

建议采用的范例字是“赵”,好处是:好记(百家姓首位);拼音短;涵盖了现有的全部风格;挺欢乐……

对应如下:

拼音风格 命令行选项 附注
Normal zhao
Tone zh4ao *
Tone2 zha4o
Tone3 zhao4
Initials zh
FirstLetter z
Finals ao
FinalsTone 4ao *
FinalsTone2 a4o
FinalsTone3 ao4

附注标*处的说明:zhào和ào不容易输入,命令行选项就要采取折衷,这是用户唯一需要“硬记”的地方。其中Tone是默认选项,一般不需要指定;必须指定时,也只要记得“4在a前面”(for all?),这也是a4o、ao4的自然外推。

coveralls commented 7 years ago

Coverage Status

Coverage remained the same at 100.0% when pulling ca5ab20344af11b9e2754f4c5ce836b765d68d8e on wdscxsj:cmdlinepinyinstyles into 040f96db1f0528d29353f8539ea61a75f7094356 on mozillazg:develop.

mozillazg commented 7 years ago

@wdscxsj 👍 新的命令行选项很符合 Go 的风格,让我一下就想到了 time 的格式化风格 。之前一直不理解为什么跟其他语言不一样,原来这个叫【基于范例】的XXX,学习了 👍 。

P.S. 可以考虑把上面的【对应关系】添加到 README.md 中。

mozillazg commented 7 years ago

悲催的程序员 我的错 😂

wdscxsj commented 7 years ago

@mozillazg 过谦了,有点帮助就好。

另外,目前所有不匹配的拼音风格都默认采用Tone,似乎有点太宽容。个人感觉,与silently fall back到默认值相比,要求用户拼写正确看上去苛刻,实际上更为合理。Go flag库也是采用“不服就死”的方式。

mozillazg commented 7 years ago

@wdscxsj 好建议 👍 ,更严格的限制确实更合理。

mozillazg commented 7 years ago

@wdscxsj 关于严格限制拼音风格选项的值,最近比较忙没时间修改,欢迎提交 PR.