和同事争执了一个很细节的设计问题

简介:
  下午的时候,和同事讨论了产品安装包中国际化的一些问题。本来对于一个通过简单的Loader窗口来拾取安装主界面语言的经典国际化安装界面模式,是没有什么问题和不妥,可是对于这个Loader窗口本身的国际化配置文件,我却和他在一个很细节的设计上有了一些不同的意见。

    这个Loader窗口其实只有4个控件,一个Label、一个ComboList和两个Button。需要国际化的地方也就4处,窗口标题、Label内容和两个Button,如下图:
    SelectLanguage.png

    本来要是从我的看法来说,这种窗口根本不做国际化都完全说得过去的,但是既然PM的spce规定要国际化,那就做呗。于是这里要说的细节问题,就是关于这4个国际化资源的存储格式的。同事的设计是使用*.ini文件来存放Loader窗口的国际化资源,其存储格式大概为:
 [Settings]
  // some settings for setup

 [Languages]
 Default=1033
 LangCount=2
 Key0=1033
 Key1=2052

 [1033]
 Language=English
 Title=Select Setup Language
 Description=Select the languge to use during the installation:
 Ok=Ok
 Cancel=Cancel

 [2052]
 Language=中文(简体)
 Title=选择安装语言
 Description=请选择在安装过程中使用的语言:
 Ok=确定
 Cancel=取消

    使用*.ini文件,我觉得到没有什么,反正有现成的API可以读取。只是对于[Languages]节点的设置,我感觉有待商榷。[Languages]节点功能其实一目了然,也就是设定默认语言、语言种类计数和语言描述。而我觉得这个ini文件中Languages Section是多余的,完全没有必要,这里面除了Default这个key/value对外,其它的描述可以说是一种 冗余的信息,只要有了下面各种具体语言的Section,这个Count以及Key的信息也就自动有了,而在Languages Section中放置Count和KeyN,反而会带来修改ini文件时需要 手动同步信息的负担,使得该ini文件没有做到真正的文档格式自描述。

    取消掉Languages Section中的Count和KeyN后,我们要获得ini文件中语言编号的列表,可以直接通过调用Win32 API函数GetPrivateProfileString(string lpAppName, string lpKeyName, string lpDefault, byte[] byBuffer, int size, string lpFilePath),使lpAppName为NULL就行了。

    可是同事却坚持认为,[Languages]节点中的Count和KeyN是有必要的,而且就是在修改ini文件时,即使国际化的语言有10多种,靠改文件时自己数清楚Count也是不难的事。我也并不是觉得数数语言的个数是mission impossible,但使我有些郁闷的是虽然我确实觉得那个设计不是很好,可也没有很有力的观点来支持我自己的意见。当然这个问题本身不是什么原则性的问题,而且按我们Product Team的规定,非原则性问题的最终决定权归具体实现者:)


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
|
小程序
【组件】微信小程序input搜索框的实现
【组件】微信小程序input搜索框的实现
351 0
|
6月前
|
安全 Linux 网络安全
CentOS9忘记root账号密码
通过以上步骤,你可以成功重置CentOS 9系统中的root密码。如果在操作过程中遇到问题,建议查阅相关文档或联系系统管理员进行进一步排查和处理。
466 9
|
11月前
|
数据采集 Web App开发 JSON
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
爬虫实战小案例—获取喜马拉雅账号的关注数据和粉丝数据生成电子表格并实现批量关注或者取关然后生成表格文件
199 0
|
语音技术 iOS开发 MacOS
Mac上的全局翻译利器 : Bob + PopClip
Mac上的全局翻译利器 : Bob + PopClip
1055 0
|
SQL Java API
谷粒商城 前置学习
谷粒商城 前置学习
137 0
|
存储 缓存
解决Gradle: Connection timed out问题
解决Gradle: Connection timed out问题
4839 0
|
Ubuntu Linux 数据安全/隐私保护
vm安装Ubuntu以及Ubuntu设置中文
vm安装Ubuntu以及Ubuntu设置中文
814 0
|
定位技术
98Echarts - 地理坐标/地图(USA Population Estimates (2012))
98Echarts - 地理坐标/地图(USA Population Estimates (2012))
102 0
|
人工智能 Cloud Native 大数据
“后红海”时代, 阿里资深技术专家揭秘当下大数据体系
任何一种技术都会经历从阳春白雪到下里巴人的过程,就像我们对计算机的理解从 “戴着鞋套才能进的机房”变成了随处可见的智能手机。在前面 20 年中,大数据技术也经 历了这样的过程,从曾经高高在上的 “火箭科技(rocket science)”,成为了人人普惠 的技术。
17991 0
“后红海”时代, 阿里资深技术专家揭秘当下大数据体系