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

简介:
  下午的时候,和同事讨论了产品安装包中国际化的一些问题。本来对于一个通过简单的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/,如需转载请自行联系原博主。

目录
相关文章
|
1月前
|
XML 算法 Java
如何写出让同事无法维护的代码
如何写出让同事无法维护的代码
|
4月前
|
存储 算法
C标准库函数的工作细节
C标准库函数的工作细节
|
10月前
思考:如何写出让同事难以维护的代码?(2)
思考:如何写出让同事难以维护的代码?
48 0
思考:如何写出让同事难以维护的代码?(2)
|
10月前
|
程序员
思考:如何写出让同事难以维护的代码?(1)
思考:如何写出让同事难以维护的代码?(1)
66 0
思考:如何写出让同事难以维护的代码?(1)
|
10月前
|
API 计算机视觉
思考:如何写出让同事难以维护的代码?(4)
思考:如何写出让同事难以维护的代码?
65 0
思考:如何写出让同事难以维护的代码?(4)
|
10月前
思考:如何写出让同事难以维护的代码?(3)
思考:如何写出让同事难以维护的代码?
45 0
思考:如何写出让同事难以维护的代码?(3)
|
运维 小程序 数据可视化
不用写代码也能开发,产品经理是怎么做到的?
不用写代码也能开发,产品经理是怎么做到的?
|
程序员 API 计算机视觉
思考:如何写出让同事难以维护的代码?doge
本文从【程序命名&注释】【数据类型&类&对象】【控制执行流程】和【程序/结构设计】四个方面梳理了一些真实案例,相信通过这些案例你能迅速get技能:如何写出让同事难以维护的代码doge。
|
前端开发 测试技术
前端测试代码怎么做抽象?
哈喽,大家好,我是海怪。 不知道大家在写前端单测的时候,是否有出现测试代码和测试数据重复冗余的情况?然后不得不写一些函数和类来封装他们的。然而,慢慢地会发现:过度的封装会致使你的测试用例变得越来越难读。 那到底在写测试代码时,怎样的封装才是好的封装呢?今天就把 Kent 的这篇 《AHA Testing》 分享给大家~
前端测试代码怎么做抽象?
|
SQL Java 数据库连接
这样规范写代码,同事直呼“666”
这样规范写代码,同事直呼“666”
90 0