谈谈编程开发中的一些问题_第1页
谈谈编程开发中的一些问题_第2页
谈谈编程开发中的一些问题_第3页
谈谈编程开发中的一些问题_第4页
谈谈编程开发中的一些问题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

拥抱变化谈谈编程开发中的一些问题一个开发人员眼中的软件正确性准确理解业务需求与背景正确实现,鲁棒性良好的自测全面的测试过程保障可维护性DesignerVs.Coder需求变化时怎么办?代码是否易读易懂易改?能否降低犯错机会?写文档了么?感知效果运行性能,流畅美观呈现,协调直观便利,自解释的友好兼顾傻瓜与专家生存问题更快更高更强走向光明变化的世界什么在变?需求、进度、人员、环境能否预知变化?需求分析,理解目标能否控制变化?项目计划、与变更管理能否消除变化?软件设计,适应变化能否减轻变化造成的影响?文档管理写正确的代码,正确的写代码需求进度人员可维护性,决定着面对变化时所需要付出的代价如何提升可维护性理解需求要做什么理解业务范围是什么可能的变化程序设计能怎么做准备怎么做设计目标表达出来代码实现设计在前理解数据规范与美学循环重构文档体系需求文档设计文档发布文档……可维护性良好的代码特征——天然的质量保障令人愉悦的阅读体验不需要频繁修改简单明了,逻辑清晰明确基本杜绝“魔法数字”与“魔法字符”写“好”代码的几个要诀设计在前——精确理解业务需求,预测可能的变化,通过设计消除、规避变化的影响理解数据——构建良好的数据结构,以最小代价,兼顾数据体积、存取便利、使用可靠、信息完备等特征规范与美学——用艺术的眼光对待你的代码,精心排版,推敲每个空格的位置循环重构——学会嗅出代码中的“异味”,学会使用重构的方法循序渐进调整代码避免“坏”代码的一些基本原则理解你的业务需求与开发目标精心构造数据与代码结构仔细推敲变量命名多写精炼、功能单一的小函数让同样的信息、代码段只出现一次让代码自己说话,自己解释复杂逻辑不要吝啬注释文字杜绝全局变量及变种杜绝魔法数字及字符串避免使用数据信息性质的字符串索引关键信息……减少代码的……坏味道改良旧代码善于识别“味道”不好的代码学会如何分类坏代码掌握改善代码的方法随时动手修改循序渐进,积小步成大步识别分类方法动手积累勿以善小而不为勿以恶小而为之重构!什么是重构?——发现坏味道

改造

测试在不改变代码外在行为的前提下,对代码做出修改,以改进程序的内部结构。重构是一种有纪律的、经过训练的、有条不紊的程序整理方法。本质上说,重构就是“在代码写好之后改进它的设计”变化发生变化发生修改代码新的变化……代码腐烂没有重构的过程变化发生重构新的变化重构……有生命力的代码循环重构坏味道与改善手段典型坏味道手段长对象提炼对象;提炼子对象;提炼接口;使用对象替换数值;长函数提炼函数;使用对象;使用查询;分解表达式;重复代码提炼函数;提炼Class;上移函数;模板函数;依恋性转移函数;转移值域;提炼函数;…………“坏味道”是一种代码形态,通常表明存在不好的代码设计,意味着较低的可维护性,在面对变化时缺少弹性,需要付出更多的代价进行调整。训练识别坏味道的能力掌握重构的手段动起手来,改造它!小结动手之前理解需求与目标程序设计代码实现避免坏代码规范与美学改良代码嗅出坏味道循环重构坏代码——啰嗦的处理逻辑if(readonlyMode){

if

(selectedItem==null||detailPageFormMode==FormMode.CreateTask)

{

setControl(columnInfo,null,labelX-controlWidth-5,nowY,controlWidth,controlHeight,true);

}

else{initValue=selectedItem[fieldInfo.Name];setControl(columnInfo,initValue,labelX-controlWidth-5,nowY,controlWidth,controlHeight,true);}}else{

if

(selectedItem==null||detailPageFormMode==FormMode.CreateTask){setControl(columnInfo,null,labelX-controlWidth-5,nowY,controlWidth,controlHeight,false);}

else{initValue=selectedItem[fieldInfo.Name];setControl(columnInfo,initValue,labelX-controlWidth-5,nowY,controlWidth,controlHeight,false);}}改造——精简代码逻辑varinitValue:Object=(selectedItem==null||detailPageFormMode==FormMode.CreateTask)

?null:selectedItem[fieldInfo.Name];setControl(columnInfo,initValue,

labelX-controlWidth-5,nowY,controlWidth,controlHeight,readonlyMode);调整得到了什么好处?setControl调用点减为一处;对initValue的赋值可读性提高;代码变“窄”,减少横向滚动。坏代码——组合问题allcontrols.addItem(cl);vardicControl:Dictionary=newDictionary();dicControl["Control"]=cl;dicControl["Name"]=cl.id;dicControl["ValueRange"]=…;dicControl["NotNull"]=…;dicControl["Modifiable"]=…;dicControl["DataType"]=…;dicNameforValue[cl.id]=text;dicNameforControl[cl.id]=cl;dicNameforValueRange[cl.id]=dicControl["ValueRange"];dicControlforName[cl]=cl.id;alControl.push(dicControl);allcontrolsVs.alControl面向对象时代的全局变量:public成员无类型的Dictionary凌乱的数据信息存放方案飞舞的魔法字符classControlInfo{…}_dicName2ControlInfo[cl.id]=controlInfo;publicfunctiongetdicName2ControlInfo():DictionarypublicfunctiongetControlInfo(ctlId:String):Cont

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论