分享
 
 
 

如何编写高质量的代码

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

一、提高代码的重用性

代码的重用性可以通过两个方面的实现:函数级封装与对象级封装

1、函数级的封装

重用性不但体现在对对象的封装,对于重复性的业务无关的代码进行一层或多层的函数级封装,可以降低实现过程的复杂性。

进行函数级封装的特征:该过程具有简单的过程性,即只有一条线,无相关的分支或多个入口。

层次:即在编写函数时需要注重所写的函数的应用宽度,即有必要考虑先写通用功能函数,然后编写相关性功能函数,通用函数可能可以运用于其他方面的代码,而功能相关性函数,即私有函数则可以使当前的应用具有简单性,即保证了复用性,又保证了简单性。

2、对象级的封装

对象级封装能够做到更安全、更完整的封装,隐蔽不相关的处理分支,使上层调用只感觉到对象的原子特征。

对象级封装的特征:对象作用具有持久性、可能存在多入口或多出口、存在诸多关联特性、业务无关性等特征。

二、代码的一致性

内部一致性:在实现封装时,不管是函数级封装,还是对象级封装,都必须讲究一致的格调,比如说对单元格的调用时使用先行后列的入口参数,则不应该出现先列后行的入口参数的封装形式。

上下一致性:对于继续的私有级封装,更应该注意上下级之间的一致性,不应该让老虎生出一只猫来,那是应该杜绝的。同时又得保证父类的接口函义不被变更(特殊情况特殊考虑)。

三、代码的完整性

对象的封装必须提供完整的接口,在保证内部对象私有化的前提下,如何确保对内部对象的访问与操作,就必须提供完整的接口支持,对部份数据提供成对接口,如内部属性对象,提供Get与Set接口。

附加:提供完整的错误处理机制,由于这个方面并不是所有组件或对象都必须的,但在需要时只体现为更为重要。

四、接口的人性化

人性化主要体现有事务处理与参数调用等几个方面,做到内部可以实现就不要在外部实现,提供尽可能多的默认参数,也就是说从外部来看,对象是有生命的。如对象创建时需要分配一系列的内存,就不必要在创建对象时要求使用者额外地调用对象的某一接口;对象在销毁时需要释放内存等工作更应该由对象自身考虑(避免内存泄漏等更为严重的问题)

充分利用对象的多态性,使用调用者体会使用的简单性,如对一个打包对象,我们可以用一个接口实现对多种类型的数据进行打包,即在接口命名上不再体现打包数据的结构或特征等。

接口命名的人性化,在命名时要考虑其含义的简单性,调用者不需要关心的信息就不要表现出来,让用户只知道他所调用的只是一个对象,而并非是在调用多个对象。同时在接口应该体现接口的特征信息,从而使调用者有从接口命名中得到调用的体会。

五、把握封装的度

并不是封装都是好事,我们必须把握一个封装的限度,但最终可能会实现使用者所需要的相关组件,但实际封装过程可能是一个倒(金)三角模式,即从最原始的多个组件进行二次封装实现多个初级组件,依次后推,最终组件可能是由多个高级组件组成。即对每一个组件的封装应考虑尽可能的简单(复杂组件可能由多个逻辑概念上简单的组件所组成,除非对于性能要求非常高有组件可能需要考虑多种因素)。一般情况下由简单实现的模式的性能要高于直接用复杂实现的单一组件的性能要好。

有限性封装的另一个作用或好处:每一次的实现都属于简单的封装,逻辑也简单,不容易出现大问题,容易扩充与维护等。

六、性质的唯一性

封装不是大集会,尽量只体现相关方面的接口,其他需要的接口可以用其他组件里完成,再由现组件去调用,尽量避免一个接口多个用度,导致为了用一个方法而去创建一个大对象(舍本逐末)。

七、防止编码变相

目前的编码规范仍停留在变更命名及部份编码规则,但大量规范仍局限于程序员自己的编码习惯。

1、要求程序员尽量减少对全局的使用

全局变量的使用主要是因为容易使用程序在逻辑方面出现混乱,使程序形成一种网状结构,难于进行状态分析。即容易使程序无法进行问题分析与控制,程序可能失去安全性等危险。

对等情况,编写一个对象(组件),内部定义大量的成员变量,其实对于对象中的成员函数来说,他们就是全局变量,成员变量多了,同样可以使结构模糊,不易维护、控制、调试等。

2、要求程序员尽量减少或不使用GOTO语句

有相当一部份程序经常在对象之间进行数据传递,这里并不是通过某种机制进行的,而是开放对象的成员权限进行直接数据获得与设置。从而给内存泄漏提供了可乘之机,这与GOTO没有两样。

以上是自己多年来的编程经验的总结,如有补充或新的想法,请给予批评与指教:satchmo2000@163.net

Satchmo

2003年4月25日

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有