快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

太阳集团5493con:职场10年之如何成为一名合格的程序员(上)



合格在这里若何定义呢?最少来说,我这里所说的合格并不代表“优秀”,由于假如我用优秀来做标题的话,那就表示成为一名没有“瑕疵”的法度榜样员了,首先我不是那样的人,以是我也不能给出任何建议。以是我给“合格”下的定义便是:能满意企业必要,能有对照好的心态,能以大年夜局为重,能够与团队进行相助,能够开拓出相符必要的产品,这些就够了。从这里可以看出,我并不是一个完美主义者,实际上可以说是现实主义者,只是听起来我的做法有些中庸。

在给合格下了一个定义后,假如能批准我的不雅点,可以看一下以下几种赞助您达到这种“境界”的措施,假如不爱好我的不雅点,迎接砸砖(zrsoftcn@yahoo.com.cn)。

本文虽然不包括一行代码,然则都是写代码多年的一些体会,值得一读。

1.兴致盎然

写法度榜样和其它工作一样,最好是带着兴趣去做,不要太勉强,人的兴趣点都是不合的,假如仅把它当做用饭的一个对象,那可能做着会很累,比如我做开拓这么多年,除了感觉有些累外,对开拓的兴趣是不停没有减的,不停关注新的技巧,不停赓续的对它们进行考试测验,要能做到这一点,必须有兴趣在后面做支持。

若何做到有兴趣呢?首先便是要知道法度榜样是干什么的,我用它们能做什么,又能为其他人带来什么好处。早在上大年夜学的时刻,老家的一个同伙在我回家的时刻问我,你们都学什么呀,我提了谋略机,写法度榜样之类的,他就问,写法度榜样能做什么呀,我就开始努力想,想到了什么呢,可以谋略1+1=2,可以算老母牛生若干小牛儿,可以做什么汉诺塔之类的,可法度榜样除了这些又有什么用呢,当时真把我问住了,我不知写法度榜样到底有什么用。那便是我在上学时对法度榜样的理解。

后来很多多少了,在校时代帮人家写软件,有些还很有实用代价的,再后来就更多了,走上了事情岗位,每天都在写法度榜样,也知道法度榜样可以节制航天飞机啊,卫星上天啊,什么都能做。当然这些范围太大年夜,不是我们处置惩罚的范围,简单一些,可以做财务电算化,可以做ERP,可以做小游戏等,可以处置惩罚很多工作。

法度榜样员学会了写法度榜样做什么呢,我感觉除了利用于事情外,还可以在自己生活中表现一下自己的专长,比如在家中,已经是爸爸的人了,就可以给孩子写一些小软件,帮他进修啊,帮他游戏啊,很故意思的,无意偶尔并花不了太多的精力,然则能收到不错的效果。当然也不能指望你的作品的生命周期有多长,由于孩子的心思是会很快变换的。

总之,我小我觉得,写法度榜样要带着兴趣去写,要把心思钻进去,那里面是别有洞天的。大概我们那时刻还早,和现在不一样,现在我看到很多小法度榜样员同道们,写法度榜样纯是为了一份事情,并看不出来太多的兴趣在里面,整个是为了写法度榜样而写法度榜样,这样就造成心态不是很好,责任心也会有所不合。当然,生活最紧张。

2.完美主义

任何一个稍大年夜一点儿的系统一样平常都邑颠末什么设计呀,开拓呀,测试呀之类的流程,而且一样平常的系统这些角色都是分开的,设计职员先设计一个XXX,开拓职员会去做一个YYY出来给测试职员测试。设计职员一样平常应该相识开拓,这样包管他们设计的是能被实现的,假如设计职员是从空中降低下来的仙人,那么有可能开拓职员看不懂他们的天书。只管设计的很完美,然则假如无法实现的话,就即是零了。

我曩昔有个同事,他本身便是做技巧的,技巧做的相称牛,牛的不能再牛了,我们全体都很佩服他,在我们公司,任何办理不了的问题,只要找到他,一样平常都可以搞定。后来我们做一个项目,也用到分层次的观点,他认真做营业层的设计,当时感觉他设计的就分外好,好的不能再好了,好的可以成为一个专门的产品了,由于他开始自己设计脚本解析器,就像VBScript那样,然则语法是他太阳集团5493con自己创造的,和ASP类似,然则又不完全一样,展现层必须按他的语法去写法度榜样,然后他的中心层认真解析。一开始,加了一些 for/while if else之类的语法,后来发明还有其它的语法必要处置惩罚,由于不加上这些,就不能实现所有的营业,于是不停添加添加再添加,不停到有一天,他溘然发明,呀,如果我用ASP的话,这些我都不用场置惩罚了!于是着末改用asp.net来开拓,前期设计及开拓整个不用了。这便是追求完美的一个表现。

在中国,很多小软件企业一样平常都是拿到了项目就做,项目做完了就关门儿,和微软等财大年夜气粗的企业不一样,我们没有足够的经费去做钻研,假如我们不停追求完美,可能会影响全部公司的生命。只管我也感觉对付一个夷易近族来讲,这种钻研很有需要,然则让我们老师存下来再说后话吧。

3.可设置设置设备摆设摆设性

法度榜样对用户来说,只要能运行,只要能有结果,并且结果精确,所占用的光阴他们能吸收,一样平常都被觉得是过关的,在验收的时刻一样平常难度不会太大年夜。然则斟酌他们在运营历程中,可能会跟着营业的调剂,对法度榜样提出必然的改动意见,这时,对法度榜样就有了必然的磨练,你的法度榜样是否可以很快的适应营业的变更呢,为了这个营业变更,法度榜样要做哪些调剂呢?可能有以下几种可能性:

法度榜样已经无法改动,整个扔掉落从新开拓一套

找到开拓职员,对部分营业变化在法度榜样上加以实现,从新编译,从新宣布

对法度榜样设置设置设备摆设摆设进行调剂,不必要编译法度榜样,即可直接应用

在编程对照“简单”的环境下,可能对营业应用者的需求变化偏向并不太确定,以是会呈现第一种环境和第二种环境,当然无意偶尔也是营业提出者的需求不明确造成太阳集团5493con的,无意偶尔他们会很明确的说“就这么多,弗成能再改动了”,然则后期他们一样平常不会认账的。前面两种环境无法脱离法度榜样开拓职员,以是在实际运营历程中,有可能造成系统的耽误,以致更可骇的后果。

第三种环境,对利用系统加倍“礼貌”,营业部门的事情职员,可以在颠末适当的培训后,自己太阳集团5493con对设置设置设备摆设摆设加以调剂,完全适应新的需求。

举个例子,做一个数据同步的小法度榜样,必要从一个库中导出数据,放入另一个库中,源数据库可能是Access,FoxBase,目标数据库可能是 MSSQL,Oracle,数据库的字段也有可能不停在变,这时就要斟酌设置设置设备摆设摆设的机动性,尽可能斟酌周全一些,能写在设置设置设备摆设摆设文件里的,不要写在代码中。我身处甲方公司,曾经有些公司给我们开拓软件,我频频奉告他要做设置太阳集团5493con设置设备摆设摆设,可便是不听,造成后面对照麻烦的场所场面。

设置设置设备摆设摆设可以有多种要领来支持,我记得我最早用VB的时刻,似乎习惯用INI文件,由于MS有专门的API来读写INI,效率异常高;后来又都开始搞 XML,似乎INI就不太盛行了,大年夜家纷繁开始解析XML去了,据说那器械的效率比INI那种要领要低一些,不过着实也无所谓,一样平常都是系统加载的时刻读出来就OK了。还有一种要领便是把设置设置设备摆设摆设信息存储在数据库中,数据库有一些上风,当然和XML详细哪个好,我感觉并不紧张,根据小我喜爱和实际环境就可以,比如存储数据库连接信息,此时还没有连接到数据库,当然要写在XML等外部文件中了。

设置设置设备摆设摆设文件也有必然的安然性要求,一样平常在设置设置设备摆设摆设文件,会存储一些密码,假如用明文存储,有可能会造成必然的隐患,我一样平常是用双向加密算法,用的时刻自己再解开,算法并不必然要很严格,差不多就行了,由于我们做的系统也没什么太保密可言。然则我看过一些对照大年夜的系统,如OracleEBS,他们的设置设置设备摆设摆设文件,就直接存储明文密码,并不做加密处置惩罚,反正他们也知道,谁能找到这个设置设置设备摆设摆设文件已经相称不轻易了,暗藏的异常深。总之,我感觉在法度榜样设计初期就斟酌一下设置设置设备摆设摆设的机动性,对后期的掩护会异常有好处。

别的关于O/R Mapping,在开拓简单的和专用的法度榜样的时刻,很多问题都是不必要斟酌的,这种法度榜样的设计,是相对“规范”的,只要能满意当前的情况,100年可能不必要调剂,对付这种案例,我感觉就没有需要设计的太繁杂,能用就行了。然则对付大年夜部分案例来说,分外你想做产品化的时刻,必须要斟酌的工作就会多起来。比如我们做一个会员系统,会员会有很多的属性,如“会员号”,“密码”,“姓名”,这几个可能是常用的,然后当你的系统推广到不合的公司以致不合的行业的时刻,你会发明,同样是会员治理,他们所提出的要求也不是完全一样的,有些要生日,有些要身份证,有些还要老婆孩子的信息。这时就涉及到数据库里的存储字段和你的法度榜样是若何对应的,也便是所谓的O/R Mapping,我照样以C#为例吧,我据说JAVA界有很多这方面做的相称不错的框架,我没有资格去评论。对付这种O/R Mapping的实现,我觉得有两种要领:

用类的属性去实现工具与数据库字段的逐一对应

实现更机动的对应

对付第一种要领,无论数据库增添了什么字段,就必要顿时改动响应的法度榜样,在类中添加新的属性,实现与数据库逐一对应,这种要领对照麻,它涉及到代码的从新编译与宣布,然则据说现在有些代码天生的对照好的对象和要领,可以快速的实现这一点。然则我照样感觉有些麻烦。这种要领的好处很显然,对客户感到对照“礼貌”,他们应用的系统,完全是给他们定制的,他们看到的,恰是他们必要的,一样平常二次开拓的时刻,掉足的几率都邑下降。也便是把难度留给开拓商,把好处留给客户,只要客户日后不做改动,照样不错的要领。

第二种要领,也是我常用的一种要领,在类中,设定一个通用的Properties属性,在系统读取的历程中,把所有和用户属性相关的字段整个读入这个大年夜的聚拢中,它是一个hashtable,然后应用的时刻,只要按Properties["NAME"]这样的要领即可,可以看出,无论客户化若何实现,这种要领都不必要改变代码即可实现。

以上的Mapping信息,详细是存储在XML中或数据库中,并不太紧张,紧张的是实现这个思路就行了。

4.国际利用

今朝大年夜部分开拓可能都太阳集团5493con是在中国本地运行,然则也少不了有些是必要斟酌国际化的。

在N年前,做国际化据说是很烦人的,那时我反正不必要斟酌这种事,后来似乎Unicode,UTF8等编码,办理了这个问题。现在VS2010里添加Item,都直接存储为UTF8款式,在VS2003里,照样GB2312款式吧,反正不可的话,自己转存一下就可以了。

对付多说话法度榜样的检测,最好能在当地说话的操作系统里安装测试,仅在中文或英文情况下测试,理论上没什么问题,然则有些时刻可能照样存在误差的。最早用C++开拓法度榜样的时刻,应该是有个什么资本文件,把所有的字符串都放入那个地方,以是很多做汉化的,直接把那个文件翻译一下就可以了。

我也看过有些公司做PHP的,做多说话也是用资本包,到时把它搞一下,从新编译一下就行了,我不确定是不是所有的大年夜公司都用这种说话包的形式来实现多说话,不过肯定有他的好的地方和上风。

采纳说话包的形式,要求所有的说话信息必须下载到客户端,由客户端来解析,假如说话包必要做任何更新,那么客户端必须每次更新下载,这种要领的特征是速率快,一次下载,终生脱机,然则,假如我们开拓的系统并不是太康健,必要频繁更新,就会对照麻烦了。

我常常采纳的是另一种要领,即所有的说话翻译资料全放在办事器上,一样平常是存储在数据库中,客户端联机后,从数据库中先读取说话包信息,直接在内存中应用,不必要下载到本地,这样包管不会由于下载差错而造成信息不准确。有人感觉每次下载太挥霍光阴,着实想一下,一样平常的系统,能够储10K的说话资料,已经很大年夜了(由于我的系统也不大年夜,一样平常是菜单及按键等简单的翰墨)。这点带宽,在联机一瞬间可以完成。

为了适应多国说话,我在系统里建立了说话列表,表示所支持的语种,客户端或IE里,可以去选择。

在数据库存储方面,有这样一个例子,比如产品:有中文名和英文名,有些公司做的系统便是加两个字段,分手存储中文和英文,后来又要繁体中文,就再加一个字段,我说我们必要举世N多个说话的支持,你怎么办呢,确凿,这种环境下就不可了,双语不即是多说话支持。对付多说话支持,应该在“数据行”上设法主见子,而不是“数据列”,也便是分手存储多笔记录,这样根据说话去取响应的记录就可以了。

对付多说话,我信托大年夜家各有个的高着儿,只要适用自己的项目就算过关了。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: