[DTK] 软件生态想要快速建立,C/C++编程必须规范,逐渐消除指针的影子
Tofloor
poster avatar
deepin
2023-07-08 01:47
Author

前言

毋庸质疑,目前来看开发deepin/UOS中的高性能软件仍是C++编程语言,但是C++编程语言对于其他编程语言开发者(Java、pytho*)来讲学习确实挺耗时间,而且指针、动态内存分配等相关内容比较多、细节也比较多,开发的难度自然就会上升。

关于C++编程的使用和建议

1.Deepin/UOS官方,需要针对C++确定一个大多数人能够正常使用的版本,针对其版本去砍掉一些不是很重要的特性和内容,并提供相关C++开发文档

2.根据规范后的C++编程文档,在deepin/UOS系统中进行更多测试,让内存的调用情况在用户电脑上进行更多测试进行最终的调优;

3.测试稳定的C++代码,可进行库的重新封装,让Linux deepin的依赖也能完善;

4.通过C++源码库的重新封装成源码库,强制让deepin/UOS的开发者进行调用;

5.由于DTK开发套件是基于QT开发,而Qt的代码大量使用了C++面向对象的代码结构,我们需要减少软件开发者对指针变量的使用。比如C++11版就增加了智能指针uinque_ptrshared_ptrweak_ptr,这些指针都是类指针,减少了指针变量的使用。

6.除了使用智能指针、函数库等方式减少指针变量的使用外,IDE代码编辑器-Qt Creator也可以帮助代码中的指针符号的快捷自动生成实现。

比如代码中我们可以手动输入:

include 

int main(){
   //整型普通变量a
   int a = 3;
   //整型指针变量*b
   int *b = &a;
}

那么,在Qt Creator中其代码可自动补充、提示添加“*”和“&”这两种符号,并根据其函数作用域自动检测其指针使用的过程是否正确、合理,让C++程序员们能够逐渐忘掉指针的烦恼。

........

除了在软件领域对其C++语法的规范和简洁化外,硬件驱动程序也可引导其规范,让C++、QT的使用更加面向对象

Reply Favorite View the author
All Replies
1 / 2
To page
fuuko
deepin
2023-07-08 01:55
#1

一看就是没学过Qt的,连Qt内部的GC机制都不知道就在乱吹智能指针,之前还大谈QML,笑死joy

Reply View the author
deepin
2023-07-08 01:59
#2
fuuko

一看就是没学过Qt的,连Qt内部的GC机制都不知道就在乱吹智能指针,之前还大谈QML,笑死joy

最近一直都在用,但是C++的指针真的用起来不是很爽。

Reply View the author
deepin
2023-07-08 02:08
#3

代码中内容有误,应该是: b = &a; *b打印输出为:3。

Reply View the author
redmibook
deepin
2023-07-08 02:45
#4

Qt 有过很多问题和毛病,但从来没有一次是出在 C++ 身上。

好好学习吧。

Reply View the author
deepin
2023-07-08 03:06
#5
redmibook

Qt 有过很多问题和毛病,但从来没有一次是出在 C++ 身上。

好好学习吧。

关键是C++的版本太多,新特性也很多,你总不可能让别人《从C++入门到放弃》吧,应该需要官方指定一个版本去使用和规范。applaud

Reply View the author
redmibook
deepin
2023-07-08 03:15
#6

关键是C++的版本太多,新特性也很多,你总不可能让别人《从C++入门到放弃》吧,应该需要官方指定一个版本去使用和规范。applaud

QT 都是把标准写在 cmakefile 或 qmakefile 中的。
多余操这个心,有精力还是写个 app 来贡献力量吧。
这些空谈,一分钱意义也没有。

Reply View the author
deepin
2023-07-08 03:17
#7
redmibook

QT 都是把标准写在 cmakefile 或 qmakefile 中的。
多余操这个心,有精力还是写个 app 来贡献力量吧。
这些空谈,一分钱意义也没有。

QT在cmake支持力度没有Qmake高

Reply View the author
一只小H
deepin
2023-07-08 03:58
#8

QT在cmake支持力度没有Qmake高

???

QT6弃用qmake

Reply View the author
deepin
2023-07-08 04:48
#9
一只小H

???

QT6弃用qmake

不太可能吧,以前的老项目都还在用qmake.

Reply View the author
梦幻大陆
deepin
2023-07-08 04:55
#10

无法想象没有指针的 C/C++

Reply View the author
deepin
2023-07-08 05:17
#11
梦幻大陆

无法想象没有指针的 C/C++

现在很多编程语言都不用指针,c++你面相对象就面向对象罢了,干嘛还继续用C的指针。

Reply View the author
寂静的羽夏
deepin
2023-07-08 05:48
#12

现在很多编程语言都不用指针,c++你面相对象就面向对象罢了,干嘛还继续用C的指针。

我使用 C++ 那么长时间了,我说说我的理解。

C++ 虽然是面向对象,但不完全面向对象。跟 Java 和 C# 相比就明显感受到区别。C++ 只是拥有面向对象的概念,比如有类这个东西。C++ 有自己的比较重的历史包袱,虽然有各种新标准出现了各种新特性,让人眼花缭乱,但是在我的实际工程当中也就用 C11 和 C14 ,我最喜欢 for-base-range 特性和 auto 推断变量类型的特性。

智能指针只是使用了引用计数方式或者构建析构方式帮你管理了指针,但使用不当,还是会有问题的。说实话,对于我来说,各种智能指针我使用起来是比较难受的,多出了各种各样的概念和使用,纯手动管理习惯了(不过 有时候智能指针会很好用,在某个函数使用指针分配的局部资源在具有较为复杂的代码控制流会发挥明显的优势,严格的说是类的优势)……

对我而言我对 C++ 的使用我个人评价是 C with class + 会一些我感觉实用的标准新特性。

Reply View the author
寂静的羽夏
deepin
2023-07-08 05:50
#13

不太可能吧,以前的老项目都还在用qmake.

QT6 确实开始全面拥抱 cmake 了,qmake 在新建项目当中已不作为默认项目,而是 cmake ,但还是支持 qmake 的

Reply View the author
deepin
2023-07-08 06:13
#14
寂静的羽夏

我使用 C++ 那么长时间了,我说说我的理解。

C++ 虽然是面向对象,但不完全面向对象。跟 Java 和 C# 相比就明显感受到区别。C++ 只是拥有面向对象的概念,比如有类这个东西。C++ 有自己的比较重的历史包袱,虽然有各种新标准出现了各种新特性,让人眼花缭乱,但是在我的实际工程当中也就用 C11 和 C14 ,我最喜欢 for-base-range 特性和 auto 推断变量类型的特性。

智能指针只是使用了引用计数方式或者构建析构方式帮你管理了指针,但使用不当,还是会有问题的。说实话,对于我来说,各种智能指针我使用起来是比较难受的,多出了各种各样的概念和使用,纯手动管理习惯了(不过 有时候智能指针会很好用,在某个函数使用指针分配的局部资源在具有较为复杂的代码控制流会发挥明显的优势,严格的说是类的优势)……

对我而言我对 C++ 的使用我个人评价是 C with class + 会一些我感觉实用的标准新特性。

C++面向对象,还不如搞一门新的编程语言。

Reply View the author
肥葱子头
deepin
2023-07-08 06:50
#15

写了那么多年c++没用过智能指针,惭愧。。。

Reply View the author
deepin
2023-07-08 09:47
#16
肥葱子头

写了那么多年c++没用过智能指针,惭愧。。。

智能指针在一些C++源码库中经常使用。

Reply View the author
肥葱子头
deepin
2023-07-08 12:11
#17

智能指针在一些C++源码库中经常使用。

确实,底层库需要考虑很多东西,可移植,可扩展,跨平台,解耦和,模块化等等需要用到一堆的特性,看qt源码能学到很多c++的东西。

Reply View the author
Barry-okx
Junior Packager
2023-07-08 17:51
#18

上 rust 呀

Reply View the author
乾豫恒益
deepin
2023-07-08 17:59
#19

面对对象,很好的功能,开发简便了许多,确实在快速建立生态系统时,做出巨大的贡献。

不过缺点也是非常明显的,(如果是随便的小开发玩玩,就不用讨论这个话题了):

1 底层逻辑更新时间长,甚至超过10年,一旦有小问题没处理,这个问题就会一直存在;本着能运行就不改的原则,后来的程序人员根本就不敢动。

2 基础的API越来越大,好多的功能已经不再使用了,但编译的时候,每次都要编进来,让最终的文件越来越大,好多时候,大的没有意义。

3 大量的重复对象封装,继承,修改,再继承,最后的局面是忘却了原来的对象是个什么样子。一旦无法运行了,查找与修改,那工作量,实在是酸爽。

个人感觉,指针是个好东西,可以让头脑清醒一些,不要无脑的相信现有API能够正确处理你遇上的所有情况。

Reply View the author
北冥夜未央
deepin
Ecological co-builder
2023-07-08 18:13
#20

取其糟粕,去其精华?没有指针的C++,和咸鱼有什么区别

Reply View the author
1 / 2
To page