美文网首页Qt学习
9_计算器界面代码重构

9_计算器界面代码重构

作者: 编程半岛 | 来源:发表于2018-01-18 14:52 被阅读15次

    声明:此文章仅是本人在学习狄泰QT实验分析课程所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
    实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

    1. 重构的概念

    重构(Refactoring):以以改善代码质量为目的的代码重写。

    • 使其软件的设计和架构更加合理
    • 提高软件的扩展性维护性

    2. 代码实现VS代码重构

    代码实现:按照设计编程实现,重心在于功能实现
    代码重构:以提高代码质量为目的的软件架构优化

    • 区别:
      (1) 代码实现不考虑架构的好坏,只考虑动能的实现
      (2) 代码重构不能影响已实现的功能,只考虑架构的改善

    3. 软件开发过程

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


    4. 什么样的代码需要重构

    • 当发现项目中重复的代码越来越多
    • 当发现项目中代码功能越来越不清晰
    • 当发现项目中代码离设计越来越远
      ...

    重构是维持代码质量在可接受范围内的重要方式,重构的时机方式由项目组使用的软件开发过程决定

    5. 计算器界面代码重构

    重构类图:

    编程说明:计算器界面代码重构
    QCalculatorUI.h

    #ifndef _QCALCULATORUI_H_
    #define _QCALCULATORUI_H_
    
    #include <QWidget>
    #include <QLineEdit>
    #include <QPushButton>
    
    class QCalculatorUI : public QWidget
    {
    private:
        QLineEdit* m_edit;
        QPushButton* m_button[20];
        QCalculatorUI();
        bool construct();
    public:
        static QCalculatorUI* NewInstance();
        void show();
        ~QCalculatorUI();
        
    };
    
    #endif
    

    QCalculatorUI.cpp

    #include "QCalculatorUI.h"
    
    QCalculatorUI::QCalculatorUI() : QWidget(NULL, Qt::WindowCloseButtonHint)
    {
    
    }
    
    bool QCalculatorUI::construct()
    {
        bool ret = true;
        const char* butText[20] =
        { "7", "8", "9", "+", "(",
          "4", "5", "6", "-", ")",
          "1", "2", "3", "*", "<-",
          "0", ".", "=", "/", "C",
        };
    
        m_edit = new QLineEdit(this);
    
        if(m_edit != NULL)
        {
            m_edit->move(10, 10);
            m_edit->resize(240, 30);
            m_edit->setReadOnly(true);
        }
        else
        {
            ret = false;
        }
    
        for(int i=0; (i<4) && ret; ++i)
        {
            for(int j=0; (j<5) && ret; ++j)
            {
                m_button[i*5+j] = new QPushButton(this);
                if(m_button[i*5+j] != NULL)
                {
                    m_button[i*5+j]->move(10+50*j, 50+50*i);
                    m_button[i*5+j]->resize(40, 40);
                    m_button[i*5+j]->setText(butText[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()
    {
    }
    

    main.cpp

    #include <QtGui/QApplication>
    #include <QDebug>
    #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;
        }
        else
        {
            qDebug() << " Instance failure";
        }
    
        return ret;
    }
    

    输出结果


    6. 小结

    • 重构是软件开发中的重要概念
    • 重构是以提高代码质量为目的的软件开发活动
    • 重构不能影响已有的软件功能
    • 当软件功能的实现进行到一定阶段时就需要考虑重构
    • 重构可简单的理解为对软件系统进行重新架构

    相关文章

      网友评论

        本文标题:9_计算器界面代码重构

        本文链接:https://www.haomeiwen.com/subject/puaioxtx.html