使用外部配置参数化应用程序

目的

就是让代码适应不同的情况,为了适应现实的需求。

按照程序员修炼之道中说:

物归其所,事定期限

-----------------------本为明.富兰克林 《富兰克林自传》,十三条美德

如果代码依赖某些值,而这些值在应用程序发布后还有可能改变,那么就把此值放在程序外部。

当应用程序于不同的环境中运行,而且面对不同的用户时,将各环境相关,用户相关的值放在应用之外。

通过这种方式来参数化应用程序,让代码适应其运行的环境。

许多框架和相当多的可定制程序,将配置直接保存在文件中,如果信息直接放在文件中,倾向于用一些纯文本的格式。

过程

比如说,程序的获取数据周期,不同的设备不一样,这就需要更改这一个周期,这一个周期就是程序发布后,还需要修改的参数,这一个参数就需要写到配置文件里面。

cpp 复制代码
#include <QCoreApplication>
#include <QSettings>
#include <QDebug>
#include <QThread>
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    QString exePath = QCoreApplication::applicationDirPath();
    QSettings settings(exePath+"\\config.ini", QSettings::IniFormat);
    unsigned int interval = settings.value("Basic/interval", "xiaoLi").toUInt();
    qDebug() << "interval=" << interval;
    while(true)
    {
        QThread::msleep(interval);
        qDebug()<<"begin receive info ....";
    }
    return a.exec();
}

总结

这很简单,其实就是一种意识,然而,却很重要。

正如程序员修炼之道所说:

如果没有外部配置,代码的适应性和灵活性就会大打折扣 ,这是坏事吗?在现实世界中,不适应环境的物种会死亡。

毛里求斯岛上的渡渡鸟因为不适应岛上出现了人类与家畜,很快就灭绝了。这是被记录的首个因人类活动而灭绝的动物物种。

一般可配置化的东西有如下:

1、外部服务的证书

2、日志级别与日志位置

3、应用程序使用的端口、IP地址、机器名及集群名

4、特定环境的校验参数

5、外部设置参数,例如:时间间隔

6、DLL的位置

这里可以引申出很多东西,程序总是面对复杂的现实情况,其强大的适应力就体现其可变化上,而是在不改程序的前提下的变化,这样才是强大的。

最后以图说明:

相关推荐
十五年专注C++开发9 小时前
Qt-VLC: 一个集成VLC的开源跨平台媒体播放库
开发语言·qt·媒体·libvlc·vlc-qt
Aevget13 小时前
QtitanNavigation助力能源数字化转型:打造清晰可控的系统导航体验
c++·qt·嵌入式·能源·界面控件·ui开发
寻找华年的锦瑟15 小时前
Qt Quick Application&&Qt Quick Application (compat)
开发语言·qt
上去我就QWER18 小时前
Qt中如何获取系统版本信息
开发语言·qt
十五年专注C++开发1 天前
Qt-Nice-Frameless-Window: 一个跨平台无边框窗口(Frameless Window)解决方案
开发语言·c++·qt
江公望1 天前
装了新的QtCreator17,没有用Qt5.12自带的QtCreator4,导致QtCreator17无法找到Qt5.12帮助文档
qt·qml
ctgu901 天前
PyQt5(八):ui设置为可以手动随意拉伸功能
开发语言·qt·ui
进击的大海贼1 天前
QT/C++ 消息定时管理器
开发语言·c++·qt
Lj2_jOker1 天前
QT 给Qimage数据赋值,显示异常,像素对齐的坑
开发语言·前端·qt
孤独的追光者2 天前
使用Qt Designer开发上位机
开发语言·python·qt