谈谈心,顺便谈谈一个设计的问题

蓝鹰 2013-07-17 08:27:07
在这个公司工作了快半年了。目前接手过若干对我而言比较有意思,比较有挑战性的任务;也曾因加班没加班费还被别人提出那么多要求,弄得心情不爽想走;看到过一些比我经验丰富的人写出来的代码并不一定好;也认识了一个人很好但技术并没我想象的那么好的组长,和麾下几个应届生小弟、小妹(其中不乏可用之才);还有比较交心代码又漂亮的和我一起进公司的80后同事.
是的,曾有过一些不能理解的地方。不谈别的,就谈在软件的设计和技术管理上。
最近在做一个客户端3D场景显示控件的设计和实现。在设计中遇到了一些问题。为了便于分配任务和后期扩展(当然,公司之前的设计好多都是这样的初衷,不过就没然后了),一个控件类被分成了几个类。这样就面临了一些问题:
如果A类有很多方法,并有一个相应的对象聚合在控件类里面,而且希望让这个控件类把很多 A类的方法暴露出去,那样最简单的方法就是让控件类的公开方法里调用A类的方法。但是这样会导致方法太多了。 (和经理、组长讨论之后,他们居然要求我提供一个get方法返回A类的非常量指针。我当时就纳闷了,这样的接口让用户怎么用啊!他们可能一不小心就把类暴露出去的成员给析构掉。或者做更离谱的事情。后来我在公司的代码里面看到了很多这样的形式,很多人把一个类成员的非常量指针传来传去。
由于团队成员水平参差不齐,在会议上对设计的讨论缺乏效率,导致我们很多时间浪费在调试和“改代码”上面。我见过有些类创建了OGRE的资源组之后,在析构时却不敢释放,因为一旦释放就影响到其它类的行为,甚至崩溃,这或许就是像刚才那样暴露成员非常量指针造成的。但多数人没功夫去深究这些问题。
不过话说回来,我到这里,并不是多数时间被花在改代码上,到这里来了之后,自己就为公司设计并实现了一个全新的三维字体引擎模块,这还是有点成就感的,经理也让我负责引导应届生,与此同时也能让他们协助我的工
作,这也是我所喜欢的。
这样说来,我来到这里,既有失望之处,也没放弃最初的梦想,仍然对自己的软件开放生涯抱有希望。毕业一年了,在华中这个最热的城市拿着4.5k的工资,就目前的物价而言,也是我能“容忍”的。
现在,很多在刚开始对我而言很奇怪的事情已经不奇怪了。现在我的结论是,虽然公司的规模比自己第一个公司大得多,实力也强些,但这依旧不是一个非常成熟的研发团队,正因为它不成熟,我这样一个不满23的程序员或许有着放手一搏的机会。 但是,我不再是一年前的自己,现在我也看重现钱了,我不再是那个用“前途发展光明”和“每年两次加薪"就能糊弄的雏鹰了。我希望我能在这里为一个团队创造价值,也希望能得到应有的回报。
就和大家聊聊,顺便和大家谈谈刚才提到的那个设计问题。关于这个问题,我觉得我无法容忍这样的设计,如果按照讨论结果去做,我都不想写这样的 代码了。 我的解决方案是:1一定要返回常量指针;2. 在A类中声明一些mutable变量, 然后提供一些常量函数来修改这些变量,这样就可以有限地改变控件类 A类成员的行为。
...全文
4908 60 打赏 收藏 转发到动态 举报
写回复
用AI写文章
60 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-09-27
  • 打赏
  • 举报
回复
两害相较取其轻, 多害相较取最轻。
attilax 2013-09-26
  • 打赏
  • 举报
回复
最为一个大牛,我建议代码不要动,可以跑起来走行...关键在文档上..文档上指明方法就是.. 要是看到代码方法名称不爽,新的一个方法包装一下老的..改下文档走Ok....
凤楚离歌 2013-09-26
  • 打赏
  • 举报
回复
看到最后莫名其妙的笑了,我们固执又可爱的程序员
莫_问 2013-07-22
  • 打赏
  • 举报
回复
三维字体引擎模块 有毛的高深,就那个破玩意,网上解决方案一大堆,不会被你的差。。。。
xiaoqiao_82 2013-07-22
  • 打赏
  • 举报
回复
楼上的讨论都好高深啊,不过我也学到了不少东西,接口啊、const 和 mutable 啊,等等。
z2357 2013-07-22
  • 打赏
  • 举报
回复
引用 53 楼 ly114kuang 的回复:
有很多书,都写的不好!!
不错,我上学的时候,买一本书要去书店3次:第一次浏览同类的书,第二次比较看重的基本书,第三次才确定要买的书。 没有钱。
蓝鹰 2013-07-22
  • 打赏
  • 举报
回复
引用 54 楼 mni2005 的回复:
三维字体引擎模块 有毛的高深,就那个破玩意,网上解决方案一大堆,不会被你的差。。。。
是啊,公司还有现成的D3D字体呢
独行侠007 2013-07-21
  • 打赏
  • 举报
回复
ly114kuang 2013-07-21
  • 打赏
  • 举报
回复
有很多书,都写的不好!!
xiaoai 2013-07-20
  • 打赏
  • 举报
回复
蓝鹰 2013-07-20
  • 打赏
  • 举报
回复
引用 47 楼 z2357 的回复:
针对这个问题,我想到了不少认为设计模式没有用的看法。 这个讨论就是例子。很容易从经典设计模式中找一两个来解决这些困惑。 书到用时方恨少,没有理论,如何将理论应用在实践上。 实际上,包括我自己的经历,在c++还没有摸索熟练的时候,是谈不上设计模式的应用的。真正懂的技术牛人有,但是肯定不会你我的同事中间都是。
没错,是要多看看书了
伍宛魔 2013-07-20
  • 打赏
  • 举报
回复
wangshaoqing2005 2013-07-20
  • 打赏
  • 举报
回复
永不落伍 2013-07-19
  • 打赏
  • 举报
回复
sanyuanke 2013-07-19
  • 打赏
  • 举报
回复
好久不用C++了,感觉很遥远了……
jiayouxjh 2013-07-19
  • 打赏
  • 举报
回复
感觉楼主好厉害的样子。。。
z2357 2013-07-19
  • 打赏
  • 举报
回复
针对这个问题,我想到了不少认为设计模式没有用的看法。 这个讨论就是例子。很容易从经典设计模式中找一两个来解决这些困惑。 书到用时方恨少,没有理论,如何将理论应用在实践上。 实际上,包括我自己的经历,在c++还没有摸索熟练的时候,是谈不上设计模式的应用的。真正懂的技术牛人有,但是肯定不会你我的同事中间都是。
qinjuning 2013-07-19
  • 打赏
  • 举报
回复
LZ最后的总结吓呆了我。。 看看有木有更好的设计。。
  • 打赏
  • 举报
回复
这是C++吗?
工程师WWW 2013-07-19
  • 打赏
  • 举报
回复
毕业一年的小菜鸟,我负责的告诉你,你的设计是错的,老老实实get一个,然后调用其自身的方法,否则控件类的方法不知道膨胀到多少,至于析构问题,跟这个没关,属另外的设计问题(别扯什么用户怎么用,你有"用户"么?你是不是写代码就局限几个类,对整个工程不知所然呢?)
加载更多回复(39)

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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