默认忽略未知选项(仍然要求不可忽略未知位置参数) #64
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
如果我们对使用命令行库的应用进行分类,有以下三类:
对于 1 来说,如果严格解析命令行参数,很容易出现用户启动无反应的情况;但究竟该不该忽略还有待商榷。
对于 2 来说,最好是严格解析,对于不支持的选项和位置参数报错。
但对于 3 就不一样了,由于被其他应用集成,所以调用本程序的都是提前写好的程序。各个不同应用的版本升级节奏都不一样,当增加选项增加新功能时,中间会存在某段时间旧版本在接受新传入命令行选项的情况。对开发人员来说还好,但对终端用户来说就难以接受了。
考虑到不看文档的开发人员更容易遇到开发用户端产品,并使之被其他软件调用的情况,我决定让默认行为照顾这些不看文档的开发人员,即忽略未知选项。而看文档的开发人员可以主动将其改为严格模式,确保在遇到未知选项时能正确报错。