引言

回想自己将近10年的软件开发生涯(工作前已有6年),有哪些糟糕的开发经历呢?我想有必要总结一番

充满乐趣的启蒙时代

那时博主上高中,这段时间并没有什么糟糕的开发经历,BASIC语言开发坦克游戏,打发晚自习时间。使用C语言在TC图形模式下的贪吃蛇游戏、俄罗斯方块、扫雷游戏(真的,它支持鼠标操作)在高二暑假的时候一一实现。

已今天我的眼光审视这段时期的作品,我觉得仍然实现的不错,虽然每个程序的代码都混合在一个文件中,但是那个时代的我已经有意识地复用代码了(还记得那个夏天的下午,我编写TC文件管理器时,绞尽脑汁提升菜单栏的易扩展性,当时就想,能不能在加一个菜单项的时候尽量少的修改代码,最后我差不多做到了,加一个菜单,需要修改两处代码)

接活,自己实现GUI框架,奋力开发效果却不佳

大四时,我接了个桌面软件项目,为了实现美观的界面效果,我TM自己实现了一个GUI框架

很早就接触了windows开发,各种桌面开发相关的API都有尝试使用过,上下册windows程序设计 看完,一段时候后,又奋力看完 MFCwindows程序设计。我当时看书非常细致,全书所有代码都阅读理解一遍,如果你看过这基本数,你应该知道书中的代码量多惊人。因为热爱,所以执着嘛

我在大学4年,主要使用C++,其他语言仅浅尝即止,当时我认为C++是最牛B的语言,唉,消耗了不少脑力啊。(不过不管怎么说,C++的各种奇淫技巧也算是领教过了,这方面一般没人能够忽悠到我)

在威客网站认识了一个朋友,做过一个项目(3天实现了原形,对方汇来了钞票)

大四下学期,又接了个项目,需求方要求,界面要美观,不能像原先的windows程序那样,看上去显得老土

当时我对directUI技术有点兴趣,因为个人对GUI绘图方面还有有一些经验,不就是自己完全绘制图形控件嘛,有什么难的。

随后我开始了开发工作,我一遍实现功能业务代码,一边实现我的GUI框架

GUI框架实现过程

  • 实现button

    很简单,在给他加上一些样式,支持设置图片作为背景backgroundImage,再绘制text文案,完工

  • 实现流式布局

    流失布局,这块MFC中并没有,但是我学过一本介绍QT书,有提供BoxLayout这样的布局控件,不错,实现上并不难,动态计算控件大小即可。

    我实现了(此时,我也在一家游戏公司实习,做ActionScript3脚本开发,我也用as3实现了这个布局功能,被同事说没有必要,但是我当时觉得有必要)

  • 接下来,实现菜单功能

    仔细一想,很难,菜单这似乎是个浮动创建,又不像(菜单创建比较特殊,windows系统应该是有专门的实现方式),我仍然通过创建窗口的系统做了实现,窗口的大小随菜单项的数量自动调整,选择子菜单,同样会再创建一个窗口

  • 再接下来,实现表格、滚动条

    项目需要支持显示表格,也就是要实现DataGrid控件,同时,还得考虑数据较多的时候要支持滚动条滑动。读者自行考虑实现复杂度。我实现了,展现效果还真的相当美观

  • 是不是忘了一个基本控件,Edit/或者叫TextBox

    这个GUI框架不再是纯DirectUI了,我用了系统的Edit控件

  • 实现图表控件

    项目需要支持查询统计数据,以柱状图呈现

    我实现了,效果不错,这块对我来说并没有多少难度。只是我这样重复发明破旧的轮子,确实很累很累

我是个极其负责人的人,我的产品,我负责到底。最后项目还是完成了,虽然一定程度存在不少内存泄露,难以定位bug,展现效果较为奇怪且很难修改

### 感悟

这个项目,我使用复杂的语言,开发业务功能代码的同时,还要几乎从零开始实现一个GUI框架,效率极其低下。

好在,这个GUI框架还有点用,我拿去做了毕业设计(约5k行代码)

PC软件开发时代已一去不返,读书时花费大量精力投入在这块,确有不值

然而,我却并没有意识到问题,开始了我的正式工作…

未完待续…