最初由 shusheng 发布
OO is concept, not a language.
OO is a good concept, C++ is not a good OO language.
Smalltalk is more likely a good OO language.
On the other hand, as you already experenced, a good
C programer can also do good OO/Modula programming.
最初由 RPGPlayer 发布
最初由 RPGPlayer 发布
不知道你说的的RPG programmer, 是AS/400上面方头方脑的RPG语言呢, 还是Role Play Games,
Yes,I mean RPG Programmer on As/400 platform,because the RPGIV is running on As/400.
Because your name is RPGplayer, so I guess you are RPG programmer before, I was programming RPG before. Now I am changing to OO.
me Neither
我只是转换到Object-Oriented之后, 有很多乱七八糟感觉,想法和问题, 很想找个跟我差不多情况的人, 一起聊一下.
原先,写了好多年的程序,包括大学里教授教的,都是是结构式的程序设计思维(structured design and implement).,瀑布式
什么事情都是1,2,3,4,5..摆出来.先把清楚的理解的需求,都先全部实现了.不知道,不清楚,不理解的,设置一个空函数放在哪儿. 回头再1,2,3,4,5,进行拆分.
OO 就不同了. 第一系统设计要求是由有几个Class组成的, 她的责任是什么, (我对责任 accountability or responsibility, 这两个单词特别感兴趣) 和其他的class 的关系是什么.
就像管理小公司和大公司的区别:
小公司的管理: 告诉每个人 1,2,3,4,5详细的操作流程就行了. 大的公司的管理实现是通过个责任主体的划分和责任主体之间关系的确定来实现的.
但是,经多年的结构化程序设计的熏陶, 项目作完了. 回头看看, 按照Martin Fowler的Refactoring 所指程序设计的坏味道, 程序里面全有.
可是项目也完了, 客户不会为改变这些程序设计的坏味道而付款的。对他来讲,功能已经实现, 满足了要求就可以了.
为了转OO 真是花了太多的时间, 很有意思, 但是并不会在短时间内帮助你.
你是怎么考虑的? 你会转向OO吗?
最初由 RPGPlayer 发布
非常感谢各位回贴, 在Ottawa, 感觉最大的缺憾,就是, 没有人和我磨牙.
startwindow: 没有任何不尊重的意思. 多年以前, 给国内银行保险公司, 蜻蜓点水的搞过RPG. 你是怎么转换到oo呢, 有空就聊聊. 看到什么不和心意的言论, 该批判就批判.
shusheng: 完全同意你关于C的观点. 要作嵌入, 实时系统, 就要用ANSI C. 估计在OTTAWA, 对ANSI C的需求要大于C++,VC, C#之类. 我前段时间, 无聊得很, 啃过Linux's Kernel. 够高效简明的. 简直不是给人看的.
看了Broken Arrow的帖子, 很有启发, 于是就今天再乱侃一篇:
马斯洛的五个需求层次和面向对象
(有点关公战秦琼的味道吧)
根据心理学家马斯洛需求层次理论, 人的需求层次, 从低到高分为5各层次:生理需求, 生理需求, 社会需求, 尊重需求和自我实现需求.
这儿乱插一句.
移民心理悖论:
我们在国内已经满足了自己的第一层次,生理需求(衣、食、住、行等),
移民目的本是追求第二个需求层次,生理需求(安全保障的需求)
但是加拿大政府却让你继续在生理需求层次再次努力
这让我们心里很不平衡.
我把软件设计代码要求也按照需求层次的方式, 进行嫁接式的分级:
1.基本需求: 完成客户的需求就可以了. 管黑猫白猫的, 客户不懂, 也不想懂. 干好了, 给钱就利索,软件开发的原始社会. 这相当于人生理需求.
2.安全需求: 不能出错误. 黑箱,白箱,单元测试, CMM之类都是这个目的
3.相互连接需求: 组件开发, 不管你什么语言作的, 你遵守交通规则: web service/SOAP/XML, 微软的Active X 之类的标准. 相当于人的社会需求层次问题.
4.可升级, 可复用的需求: 面向对象OO, 尊重需求和自我实现.
OO 是在需求的最高层次. 这是OO的魅力, 也是问题.
如果给别人打工作, OO 是不会考虑, 除非是项目要求.
如果自己作项目, OO 应该是首选. 我现在杂七杂八的写了一些类库, 自我感觉良好, 有作用. 你自己作Class Library吗?
另外,推荐一本书, Martin Fowler:Refactoring,
特别适合有项目经验, 正在转向OO的程序员.
书里面一半以上的内容都是代码, 给你演示,如何将从味道很坏的代码, 变为干净漂亮,责任清楚的代码.
虽然以JAVA为例, 不太影响其他语言程序员的理解.
我看完之后, 特别有一种欲望, 希望有时间能够, 重构一下自己小Class Library. 甚至在读Linux 4.22 kernel时, 也想给它,来下重构.
欢迎新鲜的西红柿和鸡蛋!