`
西蜀石兰
  • 浏览: 116716 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

代码复用的一些心得

 
阅读更多
努力多经历些东西,让自己的文字厚实点。

最近开发的一个模块需要对一些股票平台进行统计分析:
1.统计各个平台的访问量
2.统计访问量前十的股票
3.统计访问量前十的股票的来源
4.统计单个平台每日的访问量
5.统计单个平台访问量前十的股票
6.统计单支股票的每日的访问量
7.统计单支股票在各平台的访问量
。。。。
还有很多,总之一共需要画16张统计分析图。
拿到需求之后,按部就班地对每一张图的进行查询sql,定义实体,写mybatis的查询语句。当做到一半的时候,发现自己做不下去了,因为,我已经没法给这么多功能类似的函数命名了。

回头再看自己写的代码,发现了大量的冗余,很多代码是可以复用的。

重新思考之后,我发现查询语句其实只有三种,group by data/code/plat,所有的查询仅仅是在这些查询语句之中添加了类似if判断之类的东西。

不得已回头重新修改xml、DAO、service、controller,原本担心这样大改之后,会需要很多时间来重新调试代码,可以修改完毕之后,我惊讶地发现,程序仅仅出来几处很明显的因为变量拼写问题造成的错误。

没有一开始就强调复用多好,因为我知道没有切身经历,是没法去体会的。当年看编程思想和核心技术时,最多只能一知半解地去领悟作者的高明,某些方法的巧妙。

其实所有写代码的技巧,目的都是为了增强代码的阅读性。

很多人不乐意看自己写的代码,因为冗余繁杂的代码,使得自己再回顾时,都需要花大量的精力和时间才能读懂,更不用说别人。

代码复用的好处在于,你一开始就把自己所需要的工具分清了,当你需要使用某个工具时,你能很明确地说出它的名字,它需要的燃料,以及它应该返回的东西。

每次写代码之前,已经认真分析了那些代码时可以复用的,可以真到了写代码,发现自己当初的分析还是不够细致。

最后,不要觉得自己思考代码复用会浪费时间,要知道,对于类似的代码,你思考方法名变量名的时间,远远大于思考它的时间,同时在调试以及修改的过程中,你对自己代码的熟悉度越高,越方便自己调试。

我TM见过自己刚写完代码调试时不知道这个变量出现在哪里的逗逼,也是玩的溜。
分享到:
评论

相关推荐

    QT小例子,教程(都是老程序猿的心得).zip_nationlmg_qt小项目实例_qt程序案例_qt简单案例_qt编程实例

    经过多方收藏,一些QT 编程的经典案例。可以直接复用代码

    Java毕业设计-基于jspm开发的“星辰”旅行分享系统-附源代码和说明文档.rar

    本系统采用了jspm作为开发框架,结合前端技术栈,实现了高效的模块化开发和代码复用,从而确保了系统的稳定性和可扩展性。同时,系统后端采用了先进的数据库技术,保证了用户数据的安全性和隐私性。 在功能方面,...

    javascript 继承学习心得总结

    看了不少js继承的东西也该总结总结了。 先说一下大概的理解,有不对的还望指正,也好更正一下三观。另外说明下,下面的例子并非原创基本就是改了个...真正是用来干啥的呢,主要是用来复用我们之前写过的代码。比如写过

    javascript event在FF和IE的兼容传参心得(绝对好用)

    event在IE和FF不兼容,今天传参碰到些问题,参考网上的一些方法,有所心得: aClassArray[i].onmouseover = function () { //代码直接写在里面是可以的,要传参也可以传,只是不方便复用 }; aClassArray[i]....

    ROS机器人学习小结.docx

    组织化工具包丰富 移动机器人的开发往往需要一些友好的可视化工具和仿真软件, ROS采用组件 的方法将这些工具和软件集成到系统中可以作为一个组件直接使用。例如 3D 可视化工具rvk,开发者可以根据ROS定义的接口在其...

    vue elementui form表单验证的实现

    1.问题 我们公司的项目比较大 表格 表单的页面都不胜数 ,基于此封装了一些 可复用的代码。 2.分析 vue给了我们不一样的前端代码体验 element ui 给我们一套功能强大的组件 减少了我们大量的开发时间 。双剑合璧 ...

    Java23种设计模式(Patterns in Java)

    在真正可复用的面向对象编程中,GoF 的《设计模式》为我们提供了一套可复用的面向对象技术,再配合 Refactoring(重构方法),所以很少存在简单重复的工作,加上 Java 代码的精炼性和面向对象纯洁性(设计模式是java 的灵魂...

    JD-Project:对京东首页的复刻

    CSS方面,体验了代码的复用 尽量把能还原的每个细节都还原了 Version 1 做出了大部分静态页面和hover效果 Version 2 做了上方两个弹出框 做了顶部和侧边工具条 做了5个轮播图,3个tab切换,和1个倒计时,其中有2个...

    设计模式(Patterns in Java)

    在真正可复用的面向对象编程中,GoF 的《设计模式》为我们提供了一套可复用的面向对 象技术,再配合Refactoring(重构方法),所以很少存在简单重复的工作,加上Java 代码 的精炼性和面向对象纯洁性(设计模式是java 的灵魂...

    Altera Enthernet开发资料

    DM9000A数据地址复用问题.doc DM9000寄存器功能详细介绍.doc FPGA控制DM9000A进行以太网数据收发的Verilog实现// C和Verilog代码实现.rar Dm9000a DM9000A Application Notes Ver 1_20 042205.pdf DM9000A.C ...

    Altera Enthernet DM9000开发资料

    DM9000A数据地址复用问题.doc DM9000寄存器功能详细介绍.doc FPGA控制DM9000A进行以太网数据收发的Verilog实现// C和Verilog代码实现.rar Dm9000a DM9000A Application Notes Ver 1_20 042205.pdf DM9000A....

    asp.net知识库

    HttpModule 实现 ASP.Net (*.aspx) 中文简繁体的自动转换,不用修改原有的任何代码,直接部署即可! 服务器自定义开发二之客户端脚本回发 Web开发: 使用URL重写WEB主题切换 如何在Asp.Net1.1中实现页面模板(所谓的...

    USB2.0采集卡设计心得分享,包括程序+bushound5.0完美版+协议等-电路方案

    USB的IO口需不需要复用,如果要复用,怎么设置呢?没发现手册上有讲啊,而且那2个口,PA11,PA12默认是IO口啊!怎么设置呢 答:在此部分代码用于实现我们在硬件设计部分提到的功能,USB的配置通过三个函数完成:USB_...

    单片机课程设计—带有LCD的定时闹钟.pdf

    6 4.3 主程序流程图 7 5、 详细设计 5.1 设计电路图 7 5.2 程序代码 12 5.2.1 时-分程序代码 12 5.2.2 时-分-秒程序代码 23 6、 结论 6.1 结果分析 33 6.2 心得体会 33 7、 设计总结 34 8、 参考文献 34 共 33 页 第...

    二十三种设计模式【PDF版】

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...

    基于Java的猜拳小游戏设计.doc

    Java采用面向对象技术,所有的Java程序都是对象,通过封装性实现了模块化和信息隐 藏,通过继承性实现了代码的复用,使得用户可以根据自己的需要创建自己的类库。 Java最强大的是网络方面的应用,本课程设计不涉及...

    单片机课程设计--键控彩灯.doc

    总设计,将任务说明、框图、功能模块图及相关说明分给成员,协助程 序编辑和错误处理,查找资料心得体会。 汤跃:担任软件设计,根据功能模块图细分出流程图编辑相应程序与功能相关说明,查 找资料。 曾玉珍:担任...

Global site tag (gtag.js) - Google Analytics