Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from
Mar 11, 2017

Conversation

wdscxsj
Copy link
Contributor

@wdscxsj wdscxsj commented Mar 6, 2017

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

  • 选项名过长,且大小写字母数字混合,拼写不便。一般来说,命令行选项极少采用upper camel casing的形式,即使简单地strconv.ToLower()一下再比较,用户体验也会好一些。
  • 命名略显仓促,用户难以记忆,代码难以重构和扩展。例如,Normal改称Toneless似乎更精确;哪些风格带有复数s,什么是2什么是3,为什么没有1,用户回忆起来恐怕也得“顿一下”。

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

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

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

对应如下:

拼音风格 命令行选项 附注
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
Copy link

coveralls commented Mar 6, 2017

Coverage Status

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

@mozillazg
Copy link
Owner

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

  • 选项名过长,且大小写字母数字混合,拼写不便。学习了 👍
  • 命名略显仓促。说得对,这一点确实需要修改一下。

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

@mozillazg
Copy link
Owner

mozillazg commented Mar 6, 2017

悲催的程序员 我的错 😂

@wdscxsj
Copy link
Contributor Author

wdscxsj commented Mar 6, 2017

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

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

@mozillazg
Copy link
Owner

mozillazg commented Mar 7, 2017

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

@mozillazg mozillazg merged commit b684a99 into mozillazg:develop Mar 11, 2017
@mozillazg
Copy link
Owner

mozillazg commented Mar 15, 2017

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

bors-homu added a commit to mozillazg/python-pinyin that referenced this pull request Oct 26, 2017
简化的pypinyin命令行选项

包括2个修改:

- 增加了 short flags:`-f`, `-s`, `-p`(记如part), `-e`, `-m`(记如multiple,而且是heteronym的最后一个字母)
- 增加了基于范例的“拼音风格”命令行选项,思路见Go版:mozillazg/go-pinyin#19

提出这些调整的原因,一是原命令行较难记忆,二是输起来太费劲了(尤其是在手机上),都可能吓走用户。

BOPOMOFO、CYRILLIC的4个选项,我不懂怎么设计范例,只好照抄。本来还想弄成不区分大小写、有没有下划线都无所谓的,但对于日常使用,这样应该已经挺方便了。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants