几百个对象的初始化赋值的最佳选择?

lujugun 2009-02-17 11:18:10
问题如下:
我现在写的一个程序,虚拟了几百个工程零件,声明了一个类去管理这些零件的属性,在实际运用中,一般情况下,我想到要声明几百个这些零件的对象,并且要为每个零件赋上不同的属性,包括零件的大小,颜色等等。这是一种比较正规的做法,但是这样写的话,负责初始化的cpp文件可能就有上万行,这并不合规范。
所以想请教大家,有什么更好的办法解决这个问题,望大家说的具体一些,先谢谢了。
...全文
114 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lujugun 2009-02-18
  • 打赏
  • 举报
回复
对,这就是问题,定义倒无所谓,主要是初始化我需要做很多事。
我现在又想用读数据库的办法了。把初始化的数据放数据库里,我只要一条语句读数据库就可以完成一个零件的初始化,而且以后有什么修改直接修改数据库就可以。
ok1234567 2009-02-17
  • 打赏
  • 举报
回复
进一步的抽象出可以继承的类,层次可以简化外层接口(一点点性能上的损失)
使用默认值,通常很多属性应该都是默认的,取非默认值的时候才需要赋值
将属性分组做成结构数据,ZeroMemory的初始化看起来简单明了
使用一组SetXXXX(....);分别设定各种属性,属性多了,尽可能封装完整,不要暴露在外
上万行代码的函数也没有什么关系,假如你做的不是一个玩具,应该不需要遵守关于制作玩具的规定:)重要的是程序要健壮
arong1234 2009-02-17
  • 打赏
  • 举报
回复
ZeroMemory之类的函数应该用于平板结构,在C++领域这种需求不是很多,在有类和构造函数的机制下,使用zeromemory的几乎应该尽量减少到接近于0,因为构造函数才应该知道怎么初始化自己,zeromemory怎么能确保类的正确性?


[Quote=引用 1 楼 ok1234567 的回复:]
进一步的抽象出可以继承的类,层次可以简化外层接口(一点点性能上的损失)
使用默认值,通常很多属性应该都是默认的,取非默认值的时候才需要赋值
将属性分组做成结构数据,ZeroMemory的初始化看起来简单明了
使用一组SetXXXX(....);分别设定各种属性,属性多了,尽可能封装完整,不要暴露在外
上万行代码的函数也没有什么关系,假如你做的不是一个玩具,应该不需要遵守关于制作玩具的规定:)重要的是程序要健壮
[/Quote]
arong1234 2009-02-17
  • 打赏
  • 举报
回复
1百个零件,你就需要定义100个对象?那么1千个呢?你定义1千个?
arong1234 2009-02-17
  • 打赏
  • 举报
回复
首先你不可能直接定义这么多变量吧?你难道不用一些数据结构了来存储他们?如果你需要定义这么多对象,本身可能就意味着你模型建立的不好,为什么不能抽象成几种对象的集合呢?

其次,对于初始化你应该尽量使用构造函数来做。构造函数的设置的初始值应该至少使程序是安全的,这样当你创建这些对象之后,还可以进行额外的设置


楼主还是考虑一下你为什么需要定义那么多变量。如果你真有那么多变量,初始化问题其实并不是那么大,对象的管理才是最大的问题。你定义这么多“全局?”变量,至少违背了现代软件工程少用全局变量的要求,其次也必然没有很好的模型化你的数据,数据管理太复杂了
jingzhongrong 2009-02-17
  • 打赏
  • 举报
回复
可以使用二进制格式的文件,或者使用简单的数据库,比如access之类的。
当然,如果你不考虑效率的话,加密也可以。
lujugun 2009-02-17
  • 打赏
  • 举报
回复
谢谢你详细的回复,想一想也是,函数代码长倒问题不大。
再问一个小小的问题,比如,我管理零件的类是一个叫做lingjian.cpp文件,里面有setXXX()函数可以设置属性,但因为初始化的代码行太多,我想把初始化的上万条语句放到一个专门的init.cpp文件里,这该怎么做?
lujugun 2009-02-17
  • 打赏
  • 举报
回复
我最初想的是用读外部文件的方法,但因为我要保持我内部数据的隐蔽性,所以才犹豫,有没有什么外部数据格式,可以解决数据隐蔽问题,因为我的程序最终是要发布的。
wyc761024 2009-02-17
  • 打赏
  • 举报
回复
好像初始化你没有更好的办法能够跳过它,程序代码量应该不是一个问题,当然是指有效代码。这么大的工程不考虑使用数据库么?这样的话解决了数据存储问题。
danxuezx 2009-02-17
  • 打赏
  • 举报
回复
虽然不知道怎样解决,但觉得2楼的方法可行
DarknessTM 2009-02-17
  • 打赏
  • 举报
回复
外部 ini xml这样的配置文件
菜牛 2009-02-17
  • 打赏
  • 举报
回复
一般这样的程序可以使用外部文件设置好零件属性,程序中读取文件(生成对象)为其设置属性。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧