首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小弟我更喜欢朴素的C式的C++,而不是java式的C++

2013-10-23 
我更喜欢朴素的C式的C++,而不是java式的C++最近在给公司做一套3D字体渲染类。其中遇到了如何避免向用户暴露

我更喜欢朴素的C式的C++,而不是java式的C++
最近在给公司做一套3D字体渲染类。其中遇到了如何避免向用户暴露第三方类型声明的问题。


[解决办法]
楼主现在用的就是pImpl idiom方法呀,也就是Bridge模式
[解决办法]
引用:
可以做成类似com的

COM就不必了,感觉pimpl不采用虚函数的方式,比之com采用虚函数的方式更加便于扩展
[解决办法]
有些不懂呀,你的成员变量只是一个指针,完全可以这么写

//textRenderable.h:
//textRenderable.dll接口
class A;
class DLL_API CTextLatticeCacheMgr     //点阵缓存管理类
{
     A *m_pA;    //其中A 是第三方的字体文件解析引擎
     //......
     void generateFontLattice(wchar_t uch);   //生成unicode字符的点阵坐标函数
}
 
//textRenderable.cpp:
#include "ThirdHeader.h"
#include "textRenderable.h"
void CTextLatticeCacheMgr::generateFontLattice(wchar_t uch)
{
    AInit(m_pA);


    //......
}

不知道我说的对不对
[解决办法]
只要不是为了装13而复杂就好了。

----------------------------------------

讲一下关于“你们老大”的事情。

中国也好,外国也好,不是每个老大都是NB的。
比如我见过的CTO,写个函数的参数列表,连个空格都不写。

而有些公司的一线的开发,那真的是很厉害的。
[解决办法]
没有必要封装啊,前向声明class A;就可以了。


[解决办法]
微软的 HANDLE 就是要 隐藏 真正的 东西!
[解决办法]
好好学些啊!!!!
[解决办法]
强帖留名,周围都是红星闪闪,穿个裤衩真是不好意思过来
[解决办法]
这个玩意儿可以争论几千年, 楼主的做法有一个设计模式,叫做 HANDLE , 在 win32 api中遍地都是。
[解决办法]
既然喜欢c风格的c++那就别导出类,用handle方式,别用导出类,参数全用c风格,保证兼容性
[解决办法]
或者是为了更方便的维护?

不封装的话,如果某天需求有变化,那得重新来一个,貌似这也很蛋疼。

C++本身就需要封装,是特性。
[解决办法]

[解决办法]
很多时候确实有过度设计,特别是一些一瓶子不满,学了点设计模式和面向对象设计,到处乱用,不停的封装多态。
[解决办法]
记不得哪位C++大牛在哪本学习C++的书的前言里面说过
“用C语言1000行源码能完成的工作千万不要用C++重写!”

[解决办法]
朴素的是“精英版”,封装的是“大众版”
[解决办法]
最近也在思考3d 字体绘制,建立一个字符格子缓存,绘制汉字时通过纹理坐标获取其中的字符,以画纹理的方式显示到屏幕上。
敢问lz你的CTextLatticeCacheMgr格子缓存是在内存还是显存?cache会动态更新吗?
------解决方案--------------------


奉劝楼主不要把有限的生命浪费在无限的加密解密死循环中!

[解决办法]
写裸体函数,类去封装
[解决办法]
我现在实现全用模板写,客户有什么具体要求就调整一下模板参数

然后利用模板元编程+宏自动生成c api的头文件给客户

既保证了源代码不泄露,又保证了代码的复用性,特别方便


[解决办法]
我想:封装的东西是给别人用或者简易重用的。一般用来设计库,接口。
比如今天有一个A接口,明天要求你写成B功能,用一些抽象的代码来解决这类问题,可以提高开发效率。

但如果在所有代码中都用抽象的东西,我是很反感的,这些东西多层嵌套,语法复杂,让人看了不知道在搞什么,就好象语文在读文言文。

比如泛型在某些层面上非常好,没它就没有STL这些库。
但也导致越来越多人不喜欢C++了,新人一看这种满是尖括号的代码便望而生畏,C++阵营简直没有了新生力量。

个人认为一般的应用中,应该避免过度抽象。如果要封装,必须要把对外的接口做的极其简单,这样大家对你的封装抽象才能持一个欢迎态度。

C++和C都是语法优美的语言,有了泛型之后,它真的丑陋了,我们应该提倡白话文。封装应该是为了更好地让其他人写起来更象白话文,而不是搞得人人都写抽象代码,一个团队有几个核心老妖怪用这东西就可以了。
[解决办法]
果真LZ和你自己说的那样 用C++时间不长..很多情况下,好的代码封装结构要比代码本身要重要得多...慢慢学吧..这条路还有很长的路要走..
[解决办法]

引用:
我想:封装的东西是给别人用或者简易重用的。一般用来设计库,接口。
比如今天有一个A接口,明天要求你写成B功能,用一些抽象的代码来解决这类问题,可以提高开发效率。

但如果在所有代码中都用抽象的东西,我是很反感的,这些东西多层嵌套,语法复杂,让人看了不知道在搞什么,就好象语文在读文言文。

比如泛型在某些层面上非常好,没它就没有STL这些库。
但也导致越来越多人……
真不知道你为什么吐槽泛型编程。。。不得不说C++的泛型在代码复用方面提供了性能好于继承的解决方案。只是面向对象的话,不如去java
[解决办法]
如果你的函数的平均运行时长是函数调用开销的千倍万倍,你何必纠结了浪费一个call?
[解决办法]
C++支持多种范型,因此代码风格不像C#/Java那样只有一种长相。

经过多年实践,个人现在比较支持这种风格:

(1)底层语言基础库(STL, Boost)以泛型主导,应用基础库(如Factory, Singleton)也可以适当使用泛型。基础库可以以traits,policy的方式进行精致的设计, 以模板参数的方式考虑所有的可变情况(Looki),以通用和高效为基本原则。

(2)中间应用层以模式和面向对象为主导, 应用层逻辑也是多变的, 理论上也可采用模板的的方式来应对变化。但是应用层的变化往往是非常复杂的, 甚至是不可预测的, 所以你不可能以泛型的方式预测到所有的变化。C++现在还没有对泛型的concepts的描述机制,导致模板代码比较难懂。在多变的应用逻辑层大量采用模板显然不是一个好的选择。另外,模板在应用层的大量使用也没有比较成熟的经验,而面向对象和模式则已是非常成熟。中间层以能灵活应对变化为设计原则。

(3)模块(dll)间的交互则是以C方式的API 或者 仿COM(Factory+Interface) 为主导, 这些用法都已经非常成熟。模块接口层以二进制兼容为设计原则。

热点排行