在C中有许多选项的情况下,接收用户输入的最有效方法是什么



我正在编写一个天气程序,该程序为数据调用API。可用的标志之一是首选语言,其中大约有45个选项。这引出了我的问题。

显示所有语言选项,然后允许用户输入,然后检查有效输入的最有效方法是什么

我的最佳想法是循环打印文件中的所有选项。然后用户输入一个选项。他们的选择将根据列表进行检查以找到匹配项。如果匹配,则程序继续。如果没有,则会再次提示。

这是最好的方法吗?我正在努力使这个程序尽可能高效和专业,就像我在投资组合中使用它一样。

我的最佳想法是使用循环打印文件中的所有选项。然后用户输入一个选项。他们的选择将根据列表进行检查以找到匹配项。如果匹配,则程序继续。如果没有,则会再次提示。

这是最好的方法吗?我正在努力使这个程序尽可能高效和专业,就像我在投资组合中使用它一样。

总是有多个相互竞争的目标(单线程性能、可扩展性、功能、灵活性/可扩展性,代码可读性和容错性)。对于设计良好的代码,理解这些目标中的每一个对每一段代码的重要性是很好的(理解同一项目中不同代码的重要性可能不同也是很好的)。对于这段特定的代码;我想说,灵活性/可扩展性(例如,以后轻松添加新语言的能力)是最重要的,其次是代码可读性(以后理解代码并发现/修复其中错误的能力)。最不重要的是可伸缩性(例如,当CPU数量增加时,性能会增加多少),然后是单线程性能;因为代码只需要工作一次,而且由于人类无论如何都可以键入的速度而受到阻碍。

这是最好的方法吗?我正在努力使这个程序尽可能高效和专业,就像我在投资组合中使用它一样。

就";"人机交互";;最好的方法是让用户不可能输入无效数据(例如,具有良好预测的默认值的下拉列表,以避免需要"尚未设置"选项)。第二种最好的方式是";激活状态"-具体地说;用户输入事件";(按键、鼠标点击等)与输入字段/控件相对应的状态字段被更新,以指示字段/输入处于可接受状态,或者提供其不处于可接受的状态的原因;其中用户不可能继续(例如因为"OK"按钮被禁用)直到所有状态字段都表示输入是可接受的。对于这两个选项,之后无需验证提交的输入。

可悲的是;对于";命令行";,使用最好的方法几乎是不可能的,使用第二好的方法几乎也是不可能的。

换句话说;你需要忘记性能/效率(因为这是最不重要的);然后忘记编写好的/用户友好的软件(因为它是命令行)。

那么问题是;什么是";最不坏";选项为此;我首先假设每种语言的数据都存储在一个单独的文件(或目录?)中,文件名可用于显示目的;并且所有数据都在特定目录中(例如,包含"project/lang/UK_English"文件的"project/lang"目录、"project/llang/Spanish"文件等)。在这种情况下,您可以在";project/lang";目录,按字母顺序对它们进行排序,并使用它们来显示编号选项的列表("1)西班牙语"2) 英国英语",..)。然后,如果/当用户选择一个选项时,您可以对其进行验证(如果用户输入了错误字符、数字过高等,则报告任何错误,然后要求用户重试);并为他们选择的语言加载正确的文件(如果文件有问题,请报告任何错误,并要求用户选择其他语言)。

那样;人员/翻译人员可以创建新的文件,并且不需要修改任何代码。

为了进行比较;最快的方法是使用常量字符串(例如puts("1) Spanishn2) UK EnglishnnEnter language choice:"));并预测用户将选择什么(例如,基于跟踪他们上次选择的内容);预取和预解析";在后台(以便希望在用户实际做出选择之前为正确的选择完成所有工作);预取和预解析";如果用户做出了一个没有预料到的选择,就可以工作。这对性能来说是非常好的(可能是"即时"),但对性能来说却是非常糟糕的(不灵活、过于复杂、难以维护)。

相关内容

  • 没有找到相关文章