最近被命令参与多个项目的重构或解bug工作,本与自己无关,但做为公司的员工,上面的要求又不得不接受。而最让人头痛的事儿是,这几个项目要么就是全C写的,要么就是披着C++外套的C程序。为什么有了OOP思想,还要用C?难度他们还真相信可以把C程序写成面向对象的?
也许可以,但付出的时间和精力,还是公司给你买单,最后程序问题多多,还得不到公司的认同,何苦呢?我最开始写程序也是从C语言开始的,之后接触了C++,才觉得OOP才能解决软件工程学提出的,做软件的最核心要素降低编码复杂度。
如果不是嵌入式编程,大可不必写成C程序,因为C代码在维护阶段太多离奇的事情会发生,很多自己造的代码,后面也解决不了问题,更何况其它。正如现在我接手的解bug的项目,其项目实现者,还在其位就已经不能为其力了,问其问题也是不清不楚。后果非常地严重啊!!
今天解部门经理以前写的C代码bug, 经理守着的一起找原因,不时还津津乐道某个实现机制多么的高级和巧妙,却还不以这么多bug为耻。60多个bug,其中就好几个属于系统crash的。满大街的锁居然都没有锁住crash, 这代码也够乱的。还称我们效率太慢了,我想,你做了大半年的项目还出这么多问题。我第一天接触代码就要解决你留下的离奇bug,如果我做到了,我看部门经理的位置该换人了。
我痛恨那些把问题复杂化的coder, 更痛恨那些自己实现List, Map, Quene的coder, 你想重复造轮子,你下去私低下自己慢慢造,你不要把你的试验品移到商业产品中来。首先,我不是你的老师,不会帮你改作业。
我觉得那些恋恋不忘C的coder主要有以下几种:
1. 大叔coder
这类coder大从上世纪九十年代就开始接触编程,那是一个人编程的年代,不需要让别人理解,有问题一个人解决。后面软件规模越做越大,这类人大部分开始改投C++阵营,知道程序是让程序员看的了,但仍有少部分人对C语言不离不弃。这部分old coder,在如今的很多公司做CTO或"super coder",所以,我们有时会遇到维护他们写的代码,那将是非常头痛的事,你宁愿重写全部代码也不想做维护。如果公司遇到这种人写的代码,而其人还在其位,你只有忍气吐声,等待机会,等到他走了,你再告诉领导,那代码该退出历史舞台了。
2. 装深沉的coder
这类人喜欢显摆基础知识学得多么的扎实,数据结构用得多么的神奇。永远觉得C程序比C++程序更深沉一些。其实只是头脑更简单一些,只能单线思想问题,没有抽象能力罢了。这类coder其实就是强迫症,如果公司强行要求用C++实现代码,估计这类人会选择离职。
3. 学不会C++的人
这类人比较可怜,他们走上这条coder之路,估计也是不太情愿的,能学会C语言已经实属不容易了,能勉强过活,也就维持现状吧!!深表同情。
4. 最方便型coder
这种人C学一点,C++也会一点,但都不精通,分不清楚C++和C有什么区别,在他们的脑海里永远觉得差不多。所以这类人写代码是不经思想的,怎么用方便就怎么用,不去思考结构,模式等等。随时都可以造一个全局函数,随时都可以把几个丝毫不相关的东西放在一个class里面。只要功能可用,写再多重复的代码也情愿。你如果问他C和C++有什么区别,他肯定会说,C++是C的升级版,多了一个stl库,其它的语法差不多。我最痛恨这类coder, 丝毫没有专业精神。
结束语:
很多人认为写程序,写到四五年就已经无所不知了,也没有什么知识不了解了(除了那些从来不会使用的语言特性,也许造语言的人就多造了这种特性),就整天的忙里偷闲,不再学习,靠着经验混饭吃,得过且过。其实精通和会,还有很大差距,怎么学,学什么都不用多讲了,只要你愿意进步,你总能找到方法。
转载于:https://blog.51cto.com/duyeit/1265525