精华内容
下载资源
问答
  • 重载、重构和重写

    2014-02-23 20:38:38
    重载(Overload):在同一个类当中,有一些同名... 重写(Override):也称为覆盖,发生在父子类中,子类中有一个方法名,参数列表返回值类型与父类相同的方法完全相同时,称之为方法重写,但方法中的代码已经不同。

    重载(Overload):在同一个类当中,有一些同名的方法,但这些方法的参数列表不同,称之为重载。

             重构:就是代码的优化,也可以说是代码的修改,甚至是修改类名,都可以称之为重构。

             重写(Override):也称为覆盖,发生在父子类中,子类中有一个方法名,参数列表和返回值类型与父类相同的方法完全相同时,称之为方法重写,但方法中的代码已经不同。

    展开全文
  • 重构重写

    2017-06-25 10:41:00
    重构重写 ...之前的代码是用java写的,用了比较多的框架,而目前接手的组长我对于java都不是很熟悉。所以摆在我们面前的有两条路: 1.熟悉Java代码、相关的框架以及开发工具,继...

    从重构到重写

    从重构到重写

    1 由来

    公司在4月份的时候一个团队整体离职(我最怕这个),他们的服务器代码交接是我组长去做的。由于新项目要给客户部署,所以我们需要熟悉上个团队的代码。之前的代码是用java写的,用了比较多的框架,而目前接手的组长和我对于java都不是很熟悉。所以摆在我们面前的有两条路:
    1.熟悉Java代码、相关的框架以及开发工具,继续使用java开发。
    2.根据业务流程和目前的java代码以及文档,采用C++重写。
    领导决定采用方案2,因此重构和完善变成了重写。

    2 开始重写

    2.1 熟悉文档

    我们最开始的工作是阅读留下来的文档,主要的阅读部分是接口文档。接口文档基本描述了各个模块交互的消息定义、字段含义以及交互流程。我跟组长也把目前的业务流程过了一遍,就开始了代码编写的工作。

    2.2 代码编写

    我们的C++代码的网络库采用的是asio,没有boost依赖。之前的项目都是采用这个库,所以这部分基本没有怎么花费时间。接下来就是编写对每一条消息的处理了,接口文档中没有对这部分的业务流程进行较为详细的描述,也没有对应的流程图之类,所以只能一边写,一边阅读java代码。

    * 我们是翻译

    因为对java框架不熟悉,刚刚开始的时候,往往需要好久才能找到消息处理的地方。后来就是根据java代码,编写对应的c++处理流程。在这个过程中对于我来说比较难的部分就是不要有处理流程的遗漏,这个部分在组长建议下,采用了一步一步来对比的方式,过程很痛苦,效果还不错。

     * 谁骗了我们

    到底是代码在说谎,还是文档在骗人。
                   ---昊哥

    这个过程中比较郁闷的事情就是代码和文档的描述不一致,而只有等测试的时候才发现这个问题,原来昊哥有先见之明。记得在知乎上看到@左耳朵耗子 说的文档描述了Why,而代码描述了How,所以我们做的事情大约就是How(java)---->Why----->How(c++)。

    2.3 代码测试

    祝贺我们,终于编写完成了其中的一个服务程序,可以进行测试了。在收发短信的测试过程中,发现由于短信的消息定义不一致,导致每次发送的时间戳相同。客户端在收到短信消息以后,会检查时间戳,相同的不予以显示,因此每次只看到了一条。这个也是过了好久才发现,也说明了熟悉业务的重要性。

     3.写在最后

    经历了一个半月的工作,终于完成了初步满足功能的程序,也是时候进行简单的总结了。

    3.1 编程语言是相通的

    学过《编译原理》之后,觉得自己了解了程序编译的过程,特别是自学了号称最难学的c++之后,就认为新的编程语言不在话下。接手这个开发任务半个月之后,才知道真的是too young,to naive。java的代码看起来云里雾里的,配置文件的对应关系,函数的调用流程...分分钟干翻我。所以还是Good good study,day day up吧。

    3.2 技术栈的差别很大

    每一个框架都在发明属于自己的语言。

    就拿做Web开发举例吧。

    编程语言 Web框架
    java Structs、Spring、Hibernate、SpringMVC
    Python Django、Flask
    Php Laravel、Phalcon、Symfony2
    C CGI,apache模块
    c++ asio,muduo...

    编程语言多,对应的框架多,还是可以理解的。但是每种框架的逻辑相差很大,导致的问题就是是你在换一种编程语言的同时,几乎所有的那个编程语言的框架的知识都被替换掉了,所以不能轻易的转换编程语言。

    文章的最后,感谢侯俊杰老师《深入浅出MFC》带我走过了学习了MFC的最开始的时光,让我在使用这个框架的时候有迹可循。

    posted @ 2017-06-25 10:41 心灵捕手 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • 重构:通过调整程序代码改善软件的质量、性能,使其程序的设计模式架构更趋合理。提高软件的扩展性维护性。通俗点说,重构就是当你发现代码的不足之处时,去改动它的结构,去优化它。 重构的具体做法:可以...

    重构、重写、重载

            重构:通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理。提高软件的扩展性和维护性。通俗点说,重构就是当你发现代码的不足之处时,去改动它的结构,去优化它。

    • 重构的具体做法:可以通过重写或者重载等,但不限于此,更改注释、更改函数名类名等,都可以称之为重构;
    • 重构的目的       :是为了让软件容易维护, 修改其Bug等。

     

     

            重写(override):重写(还可以称为覆盖),子类通过@override来实现方法重写。在父类里声明了一个模糊的方法,并不给出详细的行为,在子类里,通过重写父类(同方法名,參数,返回值等)中的这种方法,让这种方法实例化,去适合子类。

    • override(Overwrite):是子类覆盖基类的方法。
    • 重写的特点:

        1、必须是在继承里;

        2、方法名、返回值类型、参数个数和参数类型 都必须相同;

        3、派生类重写的方法的访问权限不能低于基类的权限(public>protected>default>private);

        4、派生类抛出的异常应该和基类相等或比基类更小。

     

     

    重载(overloaded:是通过方法的参数识别不同的函数,即方法名称相同,参数不同(主要不同在于参数的类型和个数) 。比如你有一个show()不带参数,然后你用了一个另外相同名称的方法,带一个参数show(int i ), 这个过程就叫做重载。

     

    重载的规则:

     

    (1)必须具有不同的参数列表。

     

    (2)可以有不同的返回类型,只要参数列表不同就可以了。

     

    (3)可以有不同的访问修饰符。

     

    (4)可以抛出不同的异常。

     

    展开全文
  • 重构重写,重载

    2019-11-04 16:28:02
    重构(Refactoring)就是通过调整程序的代码,从而改善软件的质量,性能,使其程序的设计模式架构更加趋向于合理性,并提高软件的扩展性维护性。——来自百度百科,有删改。 敲黑板:重写和重载考到的概率很大...

    重构

    重构(Refactoring)就是通过调整程序的代码,从而改善软件的质量,性能,使其程序的设计模式和架构更加趋向于合理性,并提高软件的扩展性和维护性。——来自百度百科,有删改。

    敲黑板:重写和重载考到的概率很大很大!一定要理解并熟练记忆!

    先来一张图: 

    (截图来源于菜鸟教程https://www.runoob.com/java/java-override-overload.html

    重写

    函数重写主要是在继承体系中。子类中有一个跟父类“返回值,函数名,参数列表完全一样的”的方法,但是这个方法里面的内容可以不相同。亦即子类能够根据自己的需要实现父类的方法,但是要保持返回值(有些语言可以支持改变返回值)和形参都不能改变。即外壳不变,核心重写!

    class Zoo{
        public void sound(){
            System.out.println("动物园里的动物可以叫");
        }
    ]
    
    class Duck extends Zoo{
        public void sound(){
            super.sound(); //调用父类的方法
            System.out.println("鸭子可以嘎嘎叫");
        }
    }
    
    public class TestDuck{
        public static void main(String args[]){
            Zoo d = new Duck();//新建一个Duck对象
            d.sound(); //执行Duck的方法,先super,后自己的方法
        }
    }
    
    // 子类Duck里面的sound()方法跟父类Zoo中的sound()方法外壳完全一样
    
    // 输出:
    // 动物园里的动物可以叫
    // 鸭子可以嘎嘎叫

    重载

    函数重载是指可以有多个同名的函数,这些函数的名字相同,但是参数列表一定要不相同,也称函数特征标不同,指的是参数数目和/或参数类型不同。即重载:同名不同参(同函数名,不同参数列表)eg:

    void print(int a);            // #1
    void print(int a, long b);    // #2
    void print(int a, int b);     // #3
    int print(int a, int b);      // #4
    
    // #1,#2,#3 均互为重载函数
    // #3 和 #4 不互为重载函数,因为他们只是返回值不一样
    // 但函数重载的关键是:函数的参数列表要不相同
    
    

    重载与多态

    函数多态:允许函数有多种形式(多种形态)

    函数重载:可以有多个同名的函数

    联系:函数多态和函数重载这两个术语是一回事,但我们通常使用函数重载

     

    总结

    重写:同名同参。

    重载:同名不同参。

    重点在于参数,不在于返回值。

    展开全文
  • 重构重写

    2009-12-14 13:35:36
    随着时间的推移, 一个大型项目的代码会变得越来越糟. 我希望幸运地能找到例外, 但总体来说在大多数的项目中是如此. 原因很明显: 越来越多的特性. 这导致复杂度的增加. 捷径权宜之计. 为了支持类似...
  • 1. 方法是否是实现重写 public static boolean methodIsImplemented(IMethodBinding methodBinding){ ITypeBinding typeBinding = methodBinding.getDeclaringClass(); List allIMethodBindings = new ...
  • 重构重写、重载

    千次阅读 2013-09-11 16:30:04
    重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式架构更趋合理,提高软件的扩展性维护性。  定义强调是在不改变"软件之可察行为"前提下,不改变"软件之可察...
  • 这种情况下应当考虑选择使用 Mvvm 模式重构代码。Code Behind 模式将逻辑、数据结构 与 UI 代码混杂在一起,按理说这样的写法应当仅存在于原型制作阶段(急于看到第一个成品),而不应该在...
  • 在原始代码的基础上通过一定的方法,比如添加设计模式,封装类等手段,使软件的性能得到提升,从而提高软件的维护性拓展性。 【关键代码】 //父类 class Animal { ...... public string Shout() { string...
  • 代码重构

    2012-10-27 10:46:57
    重写、重做重新架构代码合起来,称为重构。    当你遇到绊脚石 --- 代码不在合适,你注意到有两样东西其实应该合并或是其他任何对你来说是"错误"的东西 --------    不要对改动犹豫不决。...
  • 重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式架构更趋合理,提高软件的扩展性维护性,系统发展到一定阶段后,使用重构的方式,不改变系统的外部功能,只对内部的结构进行...
  • 重构 重写 重载

    2017-06-06 10:36:27
    重构(Refactoring): ...重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量、性能,使其程序的设计模式架构更趋合理,提高软件的扩展性维护性。定义强调是在不改变"软件之可察行
  • 计算器界面代码重构

    2021-04-03 22:15:03
    代码实现与代码重构不同 #ifndef QCALCULATORUI_H #define QCALCULATORUI_H #include <QWidget> #include <QApplication> #include <QLineEdit> #include <QPushButton> #include <...
  • 新概念 什么是软件开发过程中的重构?...- 代码重构时不能影响已实现的功能,只考虑架构的改善 值得思考的问题 什么样的代码需要重构? - 当发现项目中重复的代码越来越多时 - 当发现项目中代码功能越来越不清晰时 -
  • 为什么我们觉得有必要从头重写软件呢? 在第一次编写系统代码时,我们的时间表十分紧迫,必须与时间赛跑,在计划时间内赶完进度。因此无论是设计讨论,还是审查会议都没花太长时间——我们没有时间浪费在这上面——...
  • 重构?还是重写

    2009-11-28 07:09:00
    重构和重写的目标,都是要通过提高的代码的可读性、结构和清晰性,从而提高系统的健壮性。清晰的代码更易于维护和改善。然而,在很多情况下,敏捷团队会难以在二者之间做出选择。\代码会随着时间的流逝变得越来越差...
  • QT实验分析教程 计算器界面代码重构(7)       重构 以改善代码质量为目的代码重写 使其软件的设计架构更加合理 提高软件的扩展性维护性       代码实现与代码重构不同 代码实现:按照设计...
  • 重构:通过调整程序代码改善软件的质量、性能,使其程序的设计模式架构更趋合理。提高软件的扩展性维护性。通俗点说,重构就是当你发现代码的不足之处时,去改动它的结构,去优化它。 重构的具体做法:...
  • 你曾去想重构一个很老的模块,但是你只看了一眼你就恶心极了。文档,奇怪的函数类的命名,等等,整个模块就像一个带着脚镣的衣衫褴褛的人,虽然能 走,但是其...最终那个模块会被他们重构, 就像以前大家介
  • 【C#】重载重写重构

    2017-07-28 16:18:00
    重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式架构更趋合理。提高软件的扩展性维护性。通俗点说,重构。就是改善既有代码的设计,让代码更加的符合面向对象规则。 而重写是出如今多态里...
  • golang+beego代码重构的一些想法

    千次阅读 2017-04-08 14:09:49
    在寒假第一周的时间里,自己从头开始,使用golang+beego写了一个自己的博客系统,通过重写一遍后台管理系统的过程中,参考别人的成熟并优雅的设计,对自己以前的代码重构有着一些想法。 models文件夹初始化文件...
  • 手上有一套网店系统,是用spring+struts+hibernate实现的。打算把它翻出来用Spring全家桶重写一遍。StructsSpring MVC区别还是蛮大的,为了顺利迁移,则需要了解它们之间有什么异同。
  • 重载、重写重构

    热门讨论 2018-12-26 16:01:10
    重构就是改善现有的代码设计,让代码更加符合面向对象规则 2.怎么修改代码的设计? 示例: 上次我们说到小狗小猫来报名参加叫声比赛,如今又来了小羊小牛来报名叫声比赛,我们可以继续写一个牛类羊类,然后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 417
精华内容 166
关键字:

代码重构和重写