游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8787|回复: 23

写了这么多年程序,越写越懵了。。。。

[复制链接]

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
发表于 2009-2-26 22:07:00 | 显示全部楼层 |阅读模式
从写第一个程序到现在应该快7年了吧。。
大多数完成的程序都是给公司或者学校使用的商用程序,数据库,工业控制,游戏,网站。。。。
语言从最开始入门的VB,C,到现在使用的C++,ASP.NET。。。。。
IDE现在一直用的是 C++ Builder VS.NET VB(VB很多年不用了。。)

但是最近一段时间,在写程序的时候,感觉越写越懵了。。。。感觉太“杂”了。。。

“杂”是什么意思呢??

比如,我现在在 WINCE 上开发一个工业控制程序,使用VC2005 MFC(已经写完了)。在写的时候,我就非常别扭(这种感觉以前就有,只不过在我“闲”下来的时候非常强烈而已)。

例如,我现在要去对一个文件进行读写操作。还没动手写,脑子里就冒出N个方法:
1.使用 C 函数:fopen,fclose,fread,fwrite.....
2.使用 C++ 函数:fstream,ifstream,ofstream......
3.使用 MFC 库函数:CFile....
4.使用 win32 API:createFile,readfile,writefile....

然后,想半天。。。。。
最后,随便选一个写。

往往在我的同一个程序中,在 A 处读写文件用的是 C 函数,在 B 处读写文件用的是 C++ 函数。。。。

算法也是一样,碰到一个问题,脑子里冒出N个算法。。。。

总之,这个“杂”,“乱”,在我写程序的过程中挥之不去。。。

回想一下,可能是长期在公司写程序,烙下的印记。。。

公司要什么??
1.快。。。。“你这个项目做了快一个月了,还没写完吗??还有一个星期,不管你用什么办法,给我完成它,否则XXXXX。。。。”
2.快快。。。。。
3.快快快。。。。。。

于是我。。。。不择手段,不讲究方法,没时间多想,没时间琢磨。。。。
不择手段,可能是我写程序的座右铭吧。。。同事都说我变态。。。。

我在公司写程序是以快出名的。。别人做一年,我做2个月,别人做一个月,我做两星期。。。

但是,我不想就维持现状,我想提高。。。
谁能帮我解决这个问题???
我要怎么做???

难道我的水平,这一辈子都只有如此了。。。。。。。
一个拿着 N 种 API 到处“堆”的家伙。。。。。。。。。

14

主题

156

帖子

158

积分

注册会员

Rank: 2

积分
158
QQ
发表于 2009-2-26 22:34:00 | 显示全部楼层

Re:写了这么多年程序,越写越懵了。。。。

你都说了~

那就慢一点,自己严格控制自己的质量呗~

21

主题

112

帖子

118

积分

注册会员

Rank: 2

积分
118
 楼主| 发表于 2009-2-26 23:30:00 | 显示全部楼层

Re:写了这么多年程序,越写越懵了。。。。

我虽然快,但,质量是没有问题的啊。。。
我一个写工业控制程序的(现在),质量有问题的话,现在就不会在这里发帖,而是被老板炒了以后,正在找工作中。。。

我觉得我的问题不在于快慢,而在于过程,写程序的过程真的是有点“杂”和“乱”。。。

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2009-2-27 00:30:00 | 显示全部楼层

Re:写了这么多年程序,越写越懵了。。。。

哎~~~~很多东西就是这么搞出来的,看起来似乎能用,但是如果想扩展,门都没有.我已经被这样的代码虐待了好长时间了.时间内出的东西的数量和质量是守恒的,多花点时间在设计上也许做的东西就不用那么乱,我代码如果要强拼凑速度也不慢,不过我一般都不肯这么做,除非那种本来应该要花三个星期的工作被领导强迫要我在一个星期之内完成,那才有可能疯狂拼凑- -!不过这个非常非常不是我想要的...

0

主题

49

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2009-2-27 09:50:00 | 显示全部楼层

Re:写了这么多年程序,越写越懵了。。。。

写封建意文档与主管谈谈,不要面谈。道出其中利弊,明事的领导会同意的。前题是你能完成现在的任务先。

7

主题

136

帖子

136

积分

注册会员

Rank: 2

积分
136
发表于 2009-2-27 10:09:00 | 显示全部楼层

Re: 写了这么多年程序,越写越懵了。。。。

其实,这种情况比较普遍存在的.
引用陈总的一句话"肉体跑在了前面,而灵魂还没有跟上".
有时候的确需要一些时间冷静下来对一些事情进行反思.

据我个人的建议,你可以把你做过的事情,进行归纳总结,
从而提炼出从需求出发的高度抽象的接口.
然后用不同的实现方式进行实现,针对不同的需求,选择不同语言,平台的实现方式.
达到需求的变化,转化为不同模块的拼装.

只要跨越了这一步,思想就能够上到一个新的层次了.既"功能层上升到构架层"

LZ可以参考一些这方面的书籍.

0

主题

1

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2009-2-27 14:24:00 | 显示全部楼层

Re:写了这么多年程序,越写越懵了。。。。

你应该去研究一点汇编语言了。更加深刻的研究计算机的原理,如果你想了解为什么API要这样实现的话。如同武功一样,你现在应该是从外而内了。也就是说招式已经纯熟了,可以练习一些内功和增加自己的武学修养。

34

主题

629

帖子

629

积分

高级会员

Rank: 4

积分
629
发表于 2009-2-27 15:34:00 | 显示全部楼层

Re:写了这么多年程序,越写越懵了。。。。

等轮到你设计整体架构的时候就明白了,一个solution大体上结构清晰就很难得了,细节地方再怎么乱,不crash就行了

0

主题

32

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2009-2-27 16:19:00 | 显示全部楼层

Re:写了这么多年程序,越写越懵了。。。。

楼主产生这种问题的根源在于你在编程时没有语义的概念。
编程就是用你使用的编程语言来描述你要实现的功能,就和写文章是一样的,用文字把需要传递的感觉描述出来是抒情散文的基本要求。
楼主能很快且bug少地把要实现的功能描述出来但却自身感觉很“杂”表明楼主在利用本能或直觉写程序,这就和很多人没上过学但也能写一手好文的道理一样。表明楼主已到一个阶段,剩下应该是沉淀提炼的阶段,即思考编程语言的各个特性及各特性的语义。
所谓语义,就是语言的意义,类似褒义词贬义词之类的概念。要表达轻蔑可用贬义词要表达赞美可用褒义词。当楼主为C++中的各个概念赋予了楼主自定的一些语义后就不会再出现所谓的“杂”了,类似一个变量是否应该const或是否应该mutable修饰或是否应该公共等问题就自然不存在了。

针对楼主提出的文件访问函数,在此给出我的看法。
1.C 函数:如果代码有可能需要兼容C语言,大多数单片机厂商都只提供C编译器而不会提供C++编译器,如果希望方便的移植到机器上应考虑使用(缺点:内部是对相应操作系统函数的封装,如CreateFile,效率稍低)。
2.C++ 函数:从不使用,文件流导致自身不能精准确定文件结构,其一些字符串存储函数更会导致未知的输出格式,比如通过增加换行符以表示记录了一行,只是单纯的玩具而已。当要存储的数据结构稍微复杂一点它就会让你付出代价。
3.MFC 库函数:如果客户接受或已经使用MFC开发,建议使用CFile封装类,再搭配上CArchive类比C++的文件流好用数倍,只是单纯方便,并无效率优势。
4.Win32 API:客户表明不能使用MFC(嫌其慢或程序入口点很容易被捕获而容易被破解及不方便加壳等)且表明在Win32平台上开发,建议使用,仅因个人不喜欢C运行时期库封装的fopen之类,且fopen之类封装了太多意义不大的动作。

若楼主能了解了语义的意义,就可尝试多编程序,而不是多写代码。编一个编解码rmvb文件的DirectShow Filter是写代码,编一个Photoshop的滤镜也是写代码。但编一个Windows的画笔或记事本就是编程序(不过编一个小游戏介于编程序和写代码之间)。一定程度后,就应做到当你看见一个软件或阅读了相关规格说明书后,程序就已经编完了,剩下的只是打字的时间罢了。

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2009-2-27 17:30:00 | 显示全部楼层

Re:写了这么多年程序,越写越懵了。。。。

1.使用 C 函数:fopen,fclose,fread,fwrite.....
2.使用 C++ 函数:fstream,ifstream,ofstream......
3.使用 MFC 库函数:CFile....
4.使用 win32 API:createFile,readfile,writefile....


其实不是lz的错,而是C++本身经过多年的发展而出现的问题。一方面由于C/C++为了可移植,标准库的东西都是各个系统的功能子集,所以每个平台都有自己的API。另一方面,C++早期为了区别于C,提供类型安全的库,所以有了C++标准流,但其实这东西不太成功,C的stdio反而生命力更强。MFC的类只是Win32的封装。

类似的例子,典型的字符串,有C的char*, wchar_t*, std::string,std:wstring, CString, BSTR, _bstr_t, System::String,还有大多数第三方库都定义了自己的字符串类型……

还有int这样的基本类型,每个library都定义了自己的符号,int32, i32, INT, INT32, DWORD, LONG,……

所以,最好是根据你最常用的library的风格,尽可能的统一到一种。对MFC和Win32这种封装关系的,能用简单的就用简单的。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-20 05:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表