毕业十年008-第一个项目1

软件产品的国际化,英文名Internationalization, 计算中间字母的个数,简写为I18N; 本地化,英文名Localization, 同样根据中间字母的个数,简写为L10N, 这是每个软件产品在走向国际化时需要必做的一件事。

对于即将毕业面向社会的我,实现公司当前软件产品的国际化就是我当前的第一个项目。当时在听到国际化这个词时还是有些模糊的,因为之前没有涉及过这方面的内容,组里其他人也没有相关的经验,于是在网上查询,什么是国际化,改用什么样的技术去实现。好在公司层面提供了技术支持,还给我们分享了一个文档,文件名是《dot.NET.Internationalization.The.Developers.Guide.to.Building.Global.Windows.and.Web.Applications.chm》, 全英文版的,只是现在再也找不到这本书了,除了我一个古老的移动硬盘之外。书中提到的具体的实现方式,则有resx资源文件,线程CultureInfo, 伪码,Unicode编码等。

阅读全英文版的技术书籍,这也是开天辟地头一次,以前在学校的时候,书籍都是中文版的,也只有在阅读某些论文的时候才会去钻研英文文章。现在进了外资企业,接触到的所有的文档都是英文的,提供的书籍是英文的,邮件往来都是英文,还是有些不适应,不过好在底子不错,能坚持一二。

关于伪码的生成,领导安排新同事RC写了一个工具,该工具是根据书中第九章的内容写成的,就是读取项目中的资源文件,然后生成对应的伪码文件并编译成伪码的DLL文件,然后加载到项目的工程中调用,这种方式极大的提高了开发速度,使其在页面运行的时候,可以很清楚的看到页面上哪些标签没有国际化。

关于开发的节奏,整个系统分为B/S和C/S两部分,我们先从B/S部分做起,B/S页面是起配置功能的, 即B/S配置的各个功能点会在C/S页面上得到应用。至于页面的国际化修改,由领导确定,安排各个同事按页面逐个进行,页面完成后,再交由测试人员测试,有问题的地方报bug出来修复,三月底,同学的加入,使得这个团队更加强大了。

另外,在这个项目中,我还新学到了如何使用MsBuild命令编译代码,因为整个系统已经开发十多年了,项目规模太大,文件太多,在VS IDE中打开编译时,经常会报出内存不足的问题。

在这个项目中获益最多的一个技术是项目中自定义开发了很多控件,以前在学校里用到的控件都是IDE提供的那些常规控件,按钮,文本框,单选框,复选框,下拉框等等。使用时也是直接拖动这些常规控件到页面上的,直接用就行,不用考虑如何实现。

现在不一样了,有自定义控件,控件中写了很多方法,这个时候你就需要了解那些方法的含义,生命周期,什么样的方法在什么情况下会执行到,会做哪些事情。所以ASP.NET盛行的时候,面试官经常会问到的一个问题就是页面的生命周期,这个生命周期可能平时用不到,不需要太在意,写Page_Load方法就行了,但是在开发自定义控件时,却是极为重要的。

大约做到第三个月的时候,即六月份左右,我也有幸承接了一个开发自定义控件的任务,那是一个电话号码的控件,因为全球各个地区的电话号码格式是不一样的,座机和手机的电话号码格式也是不一样的,在做国际化时,就需要为各个地区配置不同的电话号码控件,并提供号码的完整性验证,这自然是用正则表达式完成的,对于格式的验证,没有什么比正则表达式更好的东西了,为了验证一个特定的号码格式,可以写出极为复杂的正则表达式。

当这个控件投入使用时,也会有其他人反应这可能是过度设计了。设计是否过度不仅是个技术问题,可能还是一个哲学问题,这取决于是否需要及是否真的很需要,这是一个度,每个人都有自己的认知和尺度。

这样按部就班的工作,不知不觉到了六月底,回学校完成答辩,拍完毕业照,拿到毕业证书,学校的学习生涯算是画上了句号,不过社会的学习生涯才刚刚开始,前面的路还很长很长。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注