我愿意把代码想象成女性,我希望在我面前的是一个美女,受不了丑陋的那部分。
优美的代码可理解性高,修改成本低。不过优美的代码是不容易一次写出的。我的代码刚刚写完就是一坨屎。
比如有很多重复代码,同一个类的两个函数含有相同的表达式。
函数过长,以至于需要注释来解释区分。函数的参数超过3个。这些参数总是在一起出现,却没有为它们产生一个新的对象。
当有不同原因的改动时,有的类需要在不同方向上变化;当出于一个原因改动时,却有不同的小类需要做出小修改。
某些类中的函数拥有很多其它类中的数据
……
不能忍了!还好,我院引进了先进的“整容技术”。让我们一起来见识一下:
一、重新组织函数
1、提炼函数
这里有几个要点:
a)创建一个函数,根据它“做什么”命名;
b)我比较喜欢让每个函数都只返回一个值,返回的临时变量在函数里命名一致,return result;
2、以查询取代临时变量:
这样同一个类中的所有函数都可以获得这份信息:
a)找出只被赋值一次的临时变量,声明为final,编译测试,通过将其提炼为独立函数;
3、引入解释性变量:
用于当局部变量时提炼函数难以进行时,尤其适用于条件逻辑。
4、分解临时变量:
不要让临时变量承担一个以上的责任,每次复制,创造独立的临时变量,声明为final。
5、在java中,不要对参数赋值,建立一个临时变量,把待处理的参数赋予它:
java参数都是按值传递,给参数重新赋值,不会改变被传递对象的状态。可以修改函数对象,但重新赋值没有意义。
6、以函数对象取代函数:
建立一个新类,在其中建立一个final字段,用以保存源对象,同时建立对应原临时变量的字段;
建立构造函数,接受源对象及原函数的所有参数作为参数;
这样由于所有局部变量现在都成了字段,所以可以任意分解这个大函数,不必传递任何参数。
7、替换算法。
分享到:
相关推荐
涵盖了JavaSE的所有源代码例子 所有的代码都十分优美,十分有价值 这是一款很有用的代码,对学习Java有很大用处
面向对象的语言更接近人的思维方式,而且在很大程度上降低了代码的复杂性,同时提高了代码的可读性和可维护性,传统的 C 代码同样可以设计出比较易读,易维护,复杂度较低的优美代码,本文将通过一个实际的例子来...
今天小编就为大家分享一篇关于如何写出优美的C语言代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
重构让你的java代码更有层次感,扩展性和耦合性,写出优美的代码,传授一种思想,让代码的抒写及命名更规范
这份资料将教大家学习怎样写出结构紧凑而且优美的代码。很多时候我们写的很多代码看似很好,其实漏洞百出,都是病态的语句。这份资料将给大家带来一个全新的体验。
JavaScript代码,在这篇文章中,我将探索为什么写出漂亮的JavaScript代码是如此困难,如何使用CoffeScript(一种简约且能编译成 JavaScript的语言)改善它。我想从个人观点来声明如何定义优美代码1、优美的代码是...
(3)如果你考出85分以上的好成绩,你有义务和资格为你所在的团队作“C++/C编程”培训。希望你能和我们多多交流、相互促进。半年前我曾经发现一颗好苗子,就把他挖到我们小组来。 (4)如果你在没有任何提示的情况下...
我想中国有能力写出内核原型的程序员应该也有,但把这个题目写成一本书,感觉上不会有人愿意做这件事情,作者要花很多时间,加上主题比较硬,销售量不会太高,经济上回报有限。 但拿来文稿一看,整个编辑部大为惊艳...
我想中国有能力写出内核原型的程序员应该也有,但把这个题目写成一本书,感觉上不会有人愿意做这件事情,作者要花很多时间,加上主题比较硬,销售量不会太高,经济上回报有限。 但拿来文稿一看,整个编辑部大为惊艳...
打印出杨辉三角形 学习putpixel画点 画椭圆ellipse 利用ellipse and rectangle利用ellipse and rectangle 一个最优美的图案 ...写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度
1、程序员花更多的时间在调试、维护和升级已有代码上,而不是编写新的代码; 2、程序最重要的是正确性,...一旦这种习惯变成自动的东西,你的潜意识就会帮你照料许多细节问题,甚至你在工作压力下写出的代码也会更好。
中兴通讯的C语言,C++编程规范:关于编程规范的几个原则 1、程序员花更多的时间在调试、维护和升级已有...一旦这种习惯变成自动的东西,你的潜意识就会帮你照料许多细节问题,甚至你在工作压力下写出的代码也会更好。
你们想过用代码来写音乐吗? 最近几个月学业进步,但是暂时时间自己开发了很多python库,内容包括数学统计,各种游戏,还有音乐等等。其实还有试着写AI方面的,但是目前还是初期进度。今天我想先介绍一下我正在开发...
是Java基础类的一部分,包括了文本框,分隔窗格,按钮,表等GUI器件,使用纯Java写成,开发人员可以用少量的代码就可以写出Swing各式各样的灵活丰富的功能和模块化组件来创建漂亮优美的用户界面。Java Swing组件中...
9:采用Messenger的弹出滑动消息提示框. 10:下载管理,虚拟文件夹. 11:自动ping. 12:连接到搜索引擎. 13:自动报告bug,建议等. 14:宏功能. 15:自动同步文件夹. 16:保存加载任务. 17:计划任务. 18:单线程下载时不能创建...
不要一次写出所有的守恒。我希望你只对我进行采访。问我问题,等待我的回答。不要写解释。像面试官一样一个一个问我,等我回答。我的第一句话是“嗨” 我希望你充当 javascript 控制台。我将键入命令,您将回复 ja
行为驱动开发(Behavior-Driven Development)是领域驱动设计开发(Domain Driven Design)在测试领域的应用,剔出代码噪音。 因此,MSpec封装nUnit之后的重点就在于,体现测试本身的业务概念: 系统或者模块在某种...
我希望你用更优美优雅的高级英语单词和句子替换 我简化的 A0 级单词和句子。保持相同的意思,但使它们更文艺。我要你只回复更正、改进,不要 写任何解释。我的第一句话是“istanbulu cok seviyom burada olmak cok...