zoukankan      html  css  js  c++  java
  • 第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)重构可简单的理解为对软件系统进行重新架构

  • 相关阅读:
    HDU 1985 Conversions
    HDU 1708 Fibonacci String
    HDU 3501 Calculation 2
    HDU 4163 Stock Prices
    HDU 2391 Filthy Rich
    HDU 1996 汉诺塔VI
    HDU 2824 The Euler function
    HDU 1787 GCD Again
    HDU 2393 Higher Math
    HDU 1286 找新朋友
  • 原文地址:https://www.cnblogs.com/5iedu/p/5433121.html
Copyright © 2011-2022 走看看