第9课 计算器界面代码重构

1. 重构的概念(Refactoring)

(1)以改善代码质量为目的的代码重写,使其软件的设计和架构更加合理,提高软件的扩展性维护性

(2)代码实现代码重构的不同

 

代码实现

代码重构

概念

按照设计编程实现,重心在于功能的实现

以提高代码质量为目的的软件架构优化

区别

不考虑架构的好坏,只考虑功能的实现

代码重构时不能影响己实现的功能,只考虑架构的改善

(3)什么样的代码需要重构

  ①当发现项目中的重复的代码越来越多时

  ②当发现项目中代码功能越来越不清晰时

  ③当发现项目中的代码离设计越来越远

  ④……

2. 软件开发过程

(1)从工程的角度对软件开发中的活动进行定义和管理

 

(2)重构的进行

  ①重构是维持代码质量在可接受范围内的重要方式

  ②重构的时机方式由项目组使用的软件开发过程(Process)决定

(3)计算器界面代码的重构

 

【编程实验】计算器界面代码重构

//main.cpp

#include <QApplication>
#include "QCalculatorUI.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QCalculatorUI* cal = QCalculatorUI::NewInstance();
    int ret = -1;

    if(cal != NULL)
    {
        cal->show();
        ret = a.exec();

        delete cal;
    }

    return ret;
}

//QCalculatorUI.h

#ifndef _QCALCULATORUI_H_
#define _QCALCULATORUI_H_

#include <QWidget>
#include <QLineEdit>
#include <QPushButton>

class QCalculatorUI : public QWidget
{
private:
    QLineEdit* m_edit;
    QPushButton* m_buttons[20];

    //二阶构造法:当new一个QLineEdit和一些按钮时可能失败,所以采用二阶构造
    QCalculatorUI(); //第1阶——先隐藏构造函数
    bool construct();//第2阶

public:
    static QCalculatorUI* NewInstance();
    void show();
    ~QCalculatorUI();
};

#endif  //_QCALCULATORUI_H_

//QCalculator.cpp

#include "QCalculatorUI.h"

QCalculatorUI::QCalculatorUI(): QWidget(NULL, Qt::WindowCloseButtonHint)
{

}

bool QCalculatorUI::construct()
{
    bool ret = true;

    const char* btnText[20] =
    {
        "7", "8", "9", "+", "(",
        "4", "5", "6", "-", ")",
        "1", "2", "3", "*", "",
        "0", ".", "=", "/", "C",
    };

    m_edit = new QLineEdit(this);//le的生命期由父组件来管理
    if( m_edit != NULL)
    {
        m_edit->move(10, 10);
        m_edit->resize(240, 30);
        m_edit->setReadOnly(true); //设置编辑框的只读属性
    }
    else
    {
        ret = false;
        return ret;
    }

    for(int i = 0; (i < 4) && ret; i++)
    {
        for(int j = 0; (j< 5) && ret; j++)
        {

            m_buttons[i * 5 + j] = new QPushButton(this);//按钮的生命期由父组件来管理
            if (m_buttons[i * 5 + j] != NULL)
            {
                m_buttons[i * 5 + j]->resize(40, 40);
                m_buttons[i * 5 + j]->move(10 + j * 50, 50 + i * 50);
                m_buttons[i * 5 + j]->setText(btnText[i * 5 + j]);
            }
            else
            {
                ret = false;
            }
        }
    }

    return ret;
}

QCalculatorUI* QCalculatorUI::NewInstance()
{
    QCalculatorUI* ret = new QCalculatorUI();

    if((ret == NULL) || !ret->construct())
    {
        delete ret;//删除半成品
        ret = NULL;
    }

    return ret;
}

void  QCalculatorUI::show()
{
    QWidget::show();
    setFixedSize(width(), height());
}

 QCalculatorUI::~QCalculatorUI()
 {

 }

3. 小结

(1)重构是软件开发中的重要概念

(2)重构是以提高代码质量为目的的软件开发活动

(3)重构不能影响己有的软件功能

(4)当软件功能的实现进行到了一定阶段时就需要考虑重构

(5)重构可简单的理解为对软件系统进行重新架构

原文地址:https://www.cnblogs.com/5iedu/p/5433121.html