谈谈心,顺便谈谈一个设计的问题
蓝鹰 2013-07-17 08:27:07 在这个公司工作了快半年了。目前接手过若干对我而言比较有意思,比较有挑战性的任务;也曾因加班没加班费还被别人提出那么多要求,弄得心情不爽想走;看到过一些比我经验丰富的人写出来的代码并不一定好;也认识了一个人很好但技术并没我想象的那么好的组长,和麾下几个应届生小弟、小妹(其中不乏可用之才);还有比较交心代码又漂亮的和我一起进公司的80后同事.
是的,曾有过一些不能理解的地方。不谈别的,就谈在软件的设计和技术管理上。
最近在做一个客户端3D场景显示控件的设计和实现。在设计中遇到了一些问题。为了便于分配任务和后期扩展(当然,公司之前的设计好多都是这样的初衷,不过就没然后了),一个控件类被分成了几个类。这样就面临了一些问题:
如果A类有很多方法,并有一个相应的对象聚合在控件类里面,而且希望让这个控件类把很多 A类的方法暴露出去,那样最简单的方法就是让控件类的公开方法里调用A类的方法。但是这样会导致方法太多了。 (和经理、组长讨论之后,他们居然要求我提供一个get方法返回A类的非常量指针。我当时就纳闷了,这样的接口让用户怎么用啊!他们可能一不小心就把类暴露出去的成员给析构掉。或者做更离谱的事情。后来我在公司的代码里面看到了很多这样的形式,很多人把一个类成员的非常量指针传来传去。
由于团队成员水平参差不齐,在会议上对设计的讨论缺乏效率,导致我们很多时间浪费在调试和“改代码”上面。我见过有些类创建了OGRE的资源组之后,在析构时却不敢释放,因为一旦释放就影响到其它类的行为,甚至崩溃,这或许就是像刚才那样暴露成员非常量指针造成的。但多数人没功夫去深究这些问题。
不过话说回来,我到这里,并不是多数时间被花在改代码上,到这里来了之后,自己就为公司设计并实现了一个全新的三维字体引擎模块,这还是有点成就感的,经理也让我负责引导应届生,与此同时也能让他们协助我的工
作,这也是我所喜欢的。
这样说来,我来到这里,既有失望之处,也没放弃最初的梦想,仍然对自己的软件开放生涯抱有希望。毕业一年了,在华中这个最热的城市拿着4.5k的工资,就目前的物价而言,也是我能“容忍”的。
现在,很多在刚开始对我而言很奇怪的事情已经不奇怪了。现在我的结论是,虽然公司的规模比自己第一个公司大得多,实力也强些,但这依旧不是一个非常成熟的研发团队,正因为它不成熟,我这样一个不满23的程序员或许有着放手一搏的机会。 但是,我不再是一年前的自己,现在我也看重现钱了,我不再是那个用“前途发展光明”和“每年两次加薪"就能糊弄的雏鹰了。我希望我能在这里为一个团队创造价值,也希望能得到应有的回报。
就和大家聊聊,顺便和大家谈谈刚才提到的那个设计问题。关于这个问题,我觉得我无法容忍这样的设计,如果按照讨论结果去做,我都不想写这样的 代码了。 我的解决方案是:1一定要返回常量指针;2. 在A类中声明一些mutable变量, 然后提供一些常量函数来修改这些变量,这样就可以有限地改变控件类 A类成员的行为。