口诛笔伐MFC!丑恶!@CS.BYHH.NET

发信人: raywill (晓楚), 信区: CS
标  题: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日19:33:12 星期三)

一下摘自网络实验报告之心得体会Section:

RayMail1.0使用MFC完成,这是我第一次接触MFC,同时也是第一次使用C++编写大规模程序
。由于很多基础知识不熟悉,编写过程中不断磕磕碰碰,经历了很多困难,一度还走向崩
溃的边缘!
在编写RayMail1.0的这段时间里面,每晚都是两三点睡觉,不断地学习,不断地尝试,不
断地Debug。由于面向对象设计的思想还学习的不够,前三天的设计被我彻底否定了!因为
其中的类关系十分凌乱。后面我花了半天的时间在自习室对程序框架进行了重新设计,在
新设计的指导下,又用了三天三夜的时间对代码进行了重构,终于,RayMail1.0诞生了!

通过这次编程实践,我对Email中涉及到的协议有了更多深刻的认识。尽管MIME特性没有完
全实现,但我也阅读了大量相关文档,我想,在2.0版本中我会增加比较完善的MIME特性支
持。同时,我以前进行的Socket编程都是一些片段性质的编程,有时候还是自己设计协议
自己用,没有过很严格地遵守规范来成功实现一个周知协议的经验。这次,我做到了,算
是弥补了一个空缺。

但是,更令我感受深刻的是对编程语言的认识:选择一个优秀的编程语言和编程环境,是
事情成功的一半!在一般应用程序开发领域,MFC实际上已经是一个十分落后的基础类库了
,尽管还有很多人在使用,但个中丑恶是无法掩盖的!它封装了很多类,但它又不完全对
用户透明,一旦程序出错,用户还是需要深入到MFC源码中查错!这是何其地丑恶!表面上
看,MFC提供了大量类库供用户使用,用户只需要了解这些类的接口即可,但实际上要做到
能熟练正确使用MFC,没有深刻地理解MFC源码的话是不可能的!难怪《深入浅出MFC》如此
畅销!
为什么我们不能用.net(C#)呢?为什么我们不能用VB呢?为什么我们不能用Delphi呢?放
着高效的工具我们不用,这实际上是一种愚蠢的行为!要搞底层,我们可以去用汇编、C,
搞高层,我们可以用现代框架(.net,Java),MFC这种不上不下的东西,真是耽误人!
希望以后老师将开发语言放开,不要做过多限制,这样更有利于学生集中精力发挥各自的
无穷创造力!

关于RayMail1.0命名:Raywill是我的英文ID,为了纪念这段令人崩溃而难忘的时光,我于
是将此邮件客户端命名为RayMail。由于是发行版的第一版,故为v1.0版本。

RayMail1.0运行截图:
http://raywill.blog.sohu.com/49216909.html

发信人: joshuaG (加菲|白云杠杠团|青春如我), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日19:35:21 星期三), 站内信件

等老黄用他身边的MFC高手来教育你!嗯~~~

【 在 raywill (晓楚) 的大作中提到: 】
: 一下摘自网络实验报告之心得体会Section:

[回复本文] [发信给作者] [本篇全文] [本篇作者: joshuaG ]
发信人: joshuaG (加菲|白云杠杠团|青春如我), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日19:41:27 星期三), 站内信件

昨天新建MFC工程的时候发现在工程选项中可以去掉Doc/View Architecture Support,不
知道那是个什么样子
【 在 raywill (晓楚) 的大作中提到: 】
: 一下摘自网络实验报告之心得体会Section:

[回复本文] [发信给作者] [本篇全文] [本篇作者: raywill ]
发信人: raywill (晓楚), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日20:28:02 星期三)

反正很多年前Java就被他教育了……多一次也无妨嘛;)

【 在 joshuaG 的大作中提到: 】
: 等老黄用他身边的MFC高手来教育你!嗯~~~

[回复本文] [发信给作者] [本篇全文] [本篇作者: joshuaG ]
发信人: joshuaG (加菲|白云杠杠团|青春如我), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日20:28:34 星期三), 站内信件

我刚和大boss抱怨了MFC……

【 在 raywill (晓楚) 的大作中提到: 】
: 反正很多年前Java就被他教育了……多一次也无妨嘛;)
:

[回复本文] [发信给作者] [本篇全文] [本篇作者: kugua ]
发信人: kugua (绿苦瓜), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:40:49 星期三)

肤浅,MFC虽然很复杂,但是功能的确强大,用了几年了,个人觉得真的是很方便的,太方
便了!VB没有用过,delphi的确也很方便,VCL的框架更加简明,但是个人觉得还是C系列
的语法比较好,讨厌begin,end!感觉程序结构看着就混乱。.net我没有发言权,呵呵,
很好的开发平台,用起来很方便,效率很高。
【 在 raywill 的大作中提到: 】
: 一下摘自网络实验报告之心得体会Section:

[回复本文] [发信给作者] [本篇全文] [本篇作者: joshuaG ]
发信人: joshuaG (加菲|白云杠杠团|青春如我), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:42:05 星期三), 站内信件

总有人不爽这样的模式

【 在 kugua (绿苦瓜) 的大作中提到: 】
: 肤浅,MFC虽然很复杂,但是功能的确强大,用了几年了,个人觉得真的是很方便的,太方
: 便了!VB没有用过,delphi的确也很方便,VCL的框架

[回复本文] [发信给作者] [本篇全文] [本篇作者: lightning ]
发信人: lightning (秦兽部落十大神器–秦之昆仑镜), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:42:15 星期三), 站内信件

投入.net或者java的怀抱吧!
【 在 kugua (绿苦瓜) 的大作中提到: 】
: 肤浅,MFC虽然很复杂,但是功能的确强大

[回复本文] [发信给作者] [本篇全文] [本篇作者: kugua ]
发信人: kugua (绿苦瓜), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:44:36 星期三)

其实一直也用JAVA的,不过平时用C++最多
【 在 lightning 的大作中提到: 】
: 投入.net或者java的怀抱吧!

[回复本文] [发信给作者] [本篇全文] [本篇作者: navyakula ]
发信人: navyakula (继续革命|novice路长长), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:49:32 星期三), 站内信件

我有个问题,你骂mfc烂,出来错误要到代码内部找错误,其实这些我都经历过,但是,
那是mfc的代码有bug吗?是这样吗?
我的经验是错误虽然诡异,但是不是mfc的bug,而最有可能是你用错了mfc,然后某个断
言挂掉你。
mfc的难以忍受,就在与你必须要用它的思路去做事情,否则就行为诡异,而这些行为都
是难以难以用文字形式记录的,只有靠无数痛苦的调试去积累,去读源代码去明白。
我也觉得mfc很烂,不想搞它,恩

【 在 raywill (晓楚) 的大作中提到: 】
: 一下摘自网络实验报告之心得体会Section:
:

[回复本文] [发信给作者] [本篇全文] [本篇作者: joshuaG ]
发信人: joshuaG (加菲|白云杠杠团|青春如我), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:50:27 星期三), 站内信件

啊哈哈哈
我最怕断言失败,然后进到一个很诡异的近核心代码文件中去了

【 在 navyakula (继续革命|novice路长长) 的大作中提到: 】
: 我有个问题,你骂mfc烂,出来错误要到代码内部找错误,其实这些我都经

[回复本文] [发信给作者] [本篇全文] [本篇作者: navyakula ]
发信人: navyakula (继续革命|novice路长长), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:51:55 星期三), 站内信件

当然可以不用d/v模式了, mfc没有强制要你用。
另外用vc最主要的开发,都是用dialog-based,除非你想写个文本编辑工具。d/v特别适
合word类的工具。
不过话有说回来,用dialog-based来写程序,为什么用vc呢?vb好得多!

【 在 joshuaG (加菲|白云杠杠团|青春如我) 的大作中提到: 】
: 昨天新建MFC工程的时候发现在工程选项中可以去掉Doc/View Architecture Support,不
: 知道那是个什么样子

[回复本文] [发信给作者] [本篇全文] [本篇作者: zhaowei ]
发信人: zhaowei (vvan|地中海龙王), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:52:50 星期三)

不觉的。
1.封装的根本在于微软认识到你不需要去了解,MFC面向的对象不需要了解。
2.正确规范的使用是不出错的基础。
3.一种技术如果有人第一次使用就可以找到大BUG的话,就太失败了。
4..net和MFC 不是一个时代出现的东西,也不是一个层面上的东西,对比没有意义。
5.Delphi应该拿VC来比较。
6.任何一项技术都有它的局限性和使用范围。就像我们不能说C好烂啊,指针多不安全,面
向过程多垃圾,这样是不对的。
【 在 raywill 的大作中提到: 】
: 一下摘自网络实验报告之心得体会Section:
:

[回复本文] [发信给作者] [本篇全文] [本篇作者: joshuaG ]
发信人: joshuaG (加菲|白云杠杠团|青春如我), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:54:17 星期三), 站内信件

我是觉得MFC的D/V架构对于MDI开发很舒服,在Winform.NET中貌似还没有发现现成的D/V机
制,以前写过一个C#的MDI,操作ChildForm的工作实在恶心(现在再写肯定自己去构造D/
V了)。
【 在 navyakula ( 继续革命|novice路长长) 的大作中提到: 】

: 当然可以不用d/v模式了, mfc没有强制要你用。
: 另外用vc最主要的开发,都是用dialog-based,除非你想写个文本编辑工具。d/v特别适
: 合word类的工具。

[回复本文] [发信给作者] [本篇全文] [本篇作者: navyakula ]
发信人: navyakula (继续革命|novice路长长), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日21:59:59 星期三), 站内信件

我觉得这位兄弟说的很对,就是mfc你没按照它的规范来做,才导致错误。
不过,做为c++程序员,我觉得我没有那么多必要尊重mfc,界面库很多,除非有必要,
我不喜欢用mfc, 而且我也不喜欢做界面的说。

【 在 zhaowei (vvan|地中海龙王) 的大作中提到: 】
: 不觉的。
: 1.封装的根本在于微软认识到你不需要去了解,MFC面向的对象不需要了解。

[回复本文] [发信给作者] [本篇全文] [本篇作者: kugua ]
发信人: kugua (绿苦瓜), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:13:09 星期三)

说的在理,什么方便用什么,根据应用需求来啊,你要用MFC去做WEB应用肯定要疯掉。想
想看现在我们用的这么多软件,几乎都是用MFC开发出来的。它的功能的确强大无比。对技
术不要有排斥心理,要不多不爽,学到知识要开心才是,要有“我编程我快乐”的快感,
呵呵,不要想着它恶心,不要挑食,我们需要什么就学什么,需要什么吃什么。每种技术
的出现都不会是针对所有的应用的,专用的才可能有针对的去优化!
【 在 zhaowei 的大作中提到: 】
: 不觉的。

[回复本文] [发信给作者] [本篇全文] [本篇作者: navyakula ]
发信人: navyakula (继续革命|novice路长长), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:23:55 星期三), 站内信件

我不同意的你观点,希望你的个人看法不要对DD们产生影响才是。
我对技术这个词,有些厌烦了,我觉得我走了很多弯路,浪费了很多时间给各种类库,
各种工具。奉劝大家不要追捧技术。
我觉得个人的技能,不在于它会多少中语言,mfc中多少类和成员函数,这些技术,如果
是用来炫耀,甚至能够产生漂亮的界面的,我都觉得学了没有什么意义的。
prog 语言, 计算机的c一定要会,以后看操作系统,写各种应用程序,这都是基础。要
说学术点的,不懂scheme,lisp,那么还是不能算program高手,program是什么,是用
一种语言来表达思想,解决问题,这其中的核心思想,都是我们现在的cs课学不到的,
大家想努力的话,看stanford和mit的著作吧。

软件设计方面,c++,/java/c#任何一个都可以,基本都离不开类的设计这个oo的核心问
题。用心研究前人总结的设计经验,比讨论这种framework要有意义得多。
至于类库,那就个人爱好不同,选择不同了
做为cser,关键还是看别人的源代码。找到一个特定领域的切入点,好好做!

【 在 kugua (绿苦瓜) 的大作中提到: 】
: 说的在理,什么方便用什么,根据应用需求来啊,你要用MFC去做WEB应用肯定要疯掉。想
: 想看现在我们用的这么多软件,几乎都是用MFC开发出来的。它的功能的确强大无比。对技

[回复本文] [发信给作者] [本篇全文] [本篇作者: Wentworth ]
发信人: Wentworth (Michael Scolfield), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:31:20 星期三)

赞!
program是什么,是用一种语言来表达思想,解决问题,这其中的核心思想,都是我们现在
的cs课学不到的,大家想努力的话,看stanford和mit的著作吧。
【 在 navyakula 的大作中提到: 】
: 我不同意的你观点,希望你的个人看法不要对DD们产生影响才是。

[回复本文] [发信给作者] [本篇全文] [本篇作者: raywill ]
发信人: raywill (晓楚), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:33:53 星期三)

它是没有bug,我还是要骂他烂!
我们用。net,用java,也有出错的时候,我们却不骂java等烂,为什么呢?

【 在 navyakula 的大作中提到: 】
: 我有个问题,你骂mfc烂,出来错误要到代码内部找错误,其实这些我都经历过,但?.
:

[回复本文] [发信给作者] [本篇全文] [本篇作者: raywill ]
发信人: raywill (晓楚), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:37:35 星期三)

如果你现在在公司做开发,限期要拿出东西。
而恰恰不巧的是,你选择了一门错误的语言或开发工具,那么后果是……

当然,学院派当别论。

【 在 kugua 的大作中提到: 】
: 说的在理,什么方便用什么,根据应用需求来啊,你要用MFC去做WEB应用肯定要疯掉..

[回复本文] [发信给作者] [本篇全文] [本篇作者: Wentworth ]
发信人: Wentworth (Michael Scolfield), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:38:46 星期三)

很多东西的存在都是有理由,也不可能是十全十美的,都有值得借鉴的东西。
做事情不能太偏执了。
【 在 raywill 的大作中提到: 】
: 它是没有bug,我还是要骂他烂!
: 我们用。net,用java,也有出错的时候,我们却不骂java等烂,为什么呢?

[回复本文] [发信给作者] [本篇全文] [本篇作者: raywill ]
发信人: raywill (晓楚), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:42:01 星期三)

关键是:我现在不得不用他花4天时间赶出一个东西出来…… 还要,做出来了。
网络实验作业。

JohuaG肯定体会也很深……

不过,我已经让好几个用户测试了,结果基本都没顺利使用成功。

我做的太垃圾……基础不扎实。

【 在 Wentworth 的大作中提到: 】
: 很多东西的存在都是有理由,也不可能是十全十美的,都有值得借鉴的东西。
: 做事情不能太偏执了。

[回复本文] [发信给作者] [本篇全文] [本篇作者: joshuaG ]
发信人: joshuaG (加菲|白云杠杠团|青春如我), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:46:30 星期三), 站内信件

你把我id写错啦!!!!!
其实我还是注意到了MFC的几个优点的嗯

【 在 raywill (晓楚) 的大作中提到: 】
: 关键是:我现在不得不用他花4天时间赶出一个东西出来…… 还要,做出来了。
: 网络实验作业。

[回复本文] [发信给作者] [本篇全文] [本篇作者: Wentworth ]
发信人: Wentworth (Michael Scolfield), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:50:25 星期三)

你们还可以用MFC的类搞。。。
我当时只能用API码。。。
【 在 raywill 的大作中提到: 】
: 关键是:我现在不得不用他花4天时间赶出一个东西出来…… 还要,做出来了。
: 网络实验作业。

[回复本文] [发信给作者] [本篇全文] [本篇作者: navyakula ]
发信人: navyakula (继续革命|novice路长长), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:53:55 星期三), 站内信件

这个是你的问题了, 就像我对java意见也不小,也很不满意,因为什么?因为我觉得sun
的类库写的太全了,什么都可以在它的doc找到。。。
还有什么,就是我讨厌用java谢网页!

ft,我这是什么理由
【 在 raywill (晓楚) 的大作中提到: 】
: 它是没有bug,我还是要骂他烂!
: 我们用。net,用java,也有出错的时候,我们却不骂java等烂,为什么呢?

[回复本文] [发信给作者] [本篇全文] [本篇作者: joshuaG ]
发信人: joshuaG (加菲|白云杠杠团|青春如我), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日22:54:34 星期三), 站内信件

每个人心中都有怨念

【 在 navyakula (继续革命|novice路长长) 的大作中提到: 】
: 这个是你的问题了, 就像我对java意见也不小,也很不满意,因为什么?因为我觉得sun

[回复本文] [发信给作者] [本篇全文] [本篇作者: Pleasantboy ]
发信人: Pleasantboy (miss), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日23:01:22 星期三), 站内信件

其实不管哪样学好一样都行

【 在 kugua (绿苦瓜) 的大作中提到: 】
: 肤浅,MFC虽然很复杂,但是功能的确强大,用了几年了,个人觉得真的是很方便的,太方

[回复本文] [发信给作者] [本篇全文] [本篇作者: Pleasantboy ]
发信人: Pleasantboy (miss), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日23:05:47 星期三), 站内信件

me2
而且那个流程很诡异

【 在 joshuaG (加菲|白云杠杠团|青春如我) 的大作中提到: 】
: 啊哈哈哈
: 我最怕断言失败,然后进到一个很诡异的近核心代码文件中去了
:

[回复本文] [发信给作者] [本篇全文] [本篇作者: Pleasantboy ]
发信人: Pleasantboy (miss), 信区: CS
标  题: Re: 口诛笔伐MFC!丑恶!
发信站: 武汉白云黄鹤站 (2007年06月06日23:11:09 星期三), 站内信件

嗷嗷~~~
设计和编码果然的确不是一个层次
【 在 navyakula (继续革命|novice路长长) 的大作中提到: 】
: 我不同意的你观点,希望你的个人看法不要对DD们产生影响才是。
: 我对技术这个词,有些厌烦了,我觉得我走了很多弯路,浪费了很多时间给各种类库,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

蝎子的情怀

对人对事,蝎子都追求着完美。尽管世界总有那么多瑕疵,蝎子还是努力向那完美逼近。

这几天,我把写的基本成功了的邮件客户端代码进行了完全的重构,理由是原来的代码想想就觉得垃圾,忽地想起心里便憋闷的难受。于是,经过几个日夜的奋战,一个向完美迈进一大步的RayMail1.0诞生了~这可是用MFC真刀真枪地干出来的!累!真累!却没有休息……

Show几个界面:

 

 主界面

 

新用户界面/用户配置界面

发邮件界面

 

 收邮件界面

 

 

 

 

某类人的天性

是某类人的天性。

既然了解了,

就要能包容,

而非厌弃。

             —- “佛”曰