看板Programming
标 题Re: [请益] 撰写模拟器
发信站政大狂狷年少 (Sat Feb 24 00:54:25 2007)
转信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!news.cs.nthu!WHSHS
※ 引述《[email protected] (Dungeon)》之铭言:
> ※ 引述《typecommand (:))》之铭言:
> : 1.C执行效率比C++好,而且学习曲线也较短,照理
> : 说我应该选C,但是我已习惯物件导向的程式观念
> : ,不想再重回以前的程序导向程式设计,而且我
> : 撰写的这个模拟器,日後还会继续扩充功能,怕
> : 用C来撰写,日後功能会扩充不易。
> 有一个很严重的问题。
> 学过物件导向分析与设计了吗?
> 没有?!!
> 那C++顶多只是拿来把FUNCTION包到CLASS里罢了。
其实不单单只是这样子而已,
我也看过有人为了「写起来比较方便」,
所以还真的会乱翻书撷取片段观念用上继承跟多型,
还能生出一个很白目的继承树出来,
只有写的那个人自己知道该怎麽去用它。
> 有人真的只学C++就能写出物件导向架构的程式?
> 这是不可能滴!
这还是有可能的,
包括我和我身边不少人都是光看书名里有「C++」的书,
就学成基础观念和基本应用的方法,
之後才去看比较一般性非特定语言的物件导向书籍来加强观念,
其实 C++ 存在很多进阶书籍,
取其内容联集常能构成 1/4 - 1/2 本不同专业教科书的内容。
你可能会觉得书名有 C++ 跟只学 C++ 是不同的两回事,
但是很多人当初读那些书的原意就只是要精进 C++,
像是 Effective C++、Exceptional C++、Inside the C++ Object Model 等等。
> 至於模拟器这种需要根据硬体特性写作的东西,
> 程序导向才是最优美的。 硬要套物件导向的观念
> 进去,会被很多繁琐的细节搞到架构出不来。
套错误的物件导向观念进去才会发生这种事情,
物件的分类和继承体系设计,
并不能被现实环境的物体牵着鼻子走,
而是应当从工程角度出发去做规划,
很多教科书为了方便读者理解举了一些不好的例子,
却又没有指出实际上那样做可能发生的问题,
才会让一堆新手搞不清楚状况就错误规划,
结果掉进一堆本来不该出现的繁琐细节深渊之中。
> 什麽??
> 有人天真的认为同样写一个 function, 在把他放进去
> class以後就会变得比较好维护?
当存在多个 namespace 的时候,
如果把 function 封装进 class 会容易维护是真的,
否则不熟悉 Interface Principle 或 Koeing Lookup 的 programmer,
容易写出潜藏 ambiguous function call 的 code 出来,
让别人以及他自己在使用上遇到一些麻烦;
而 member functions 跟 class 有较强烈的关联性,
所以 member functions 会较优先被搜寻到,
那些对新手来说较诡异的问题也得以避免。
不要以为这种问题很少发生,
我三天两头就遇到有人丢 ... ambiguous ... candidates are ... 的 error 来问。
--
Name: Tseng, Ling-hua E-mail Address:
[email protected]
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage:
https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │
* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮
< IP:140.119.164.252 > ╰─╮
╚╦═╦╝ ╰
* From:61-230-216-187.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不驯;属於年少的轻狂色彩 ◎
[修改]tinlans:61-230-216-187.dynamic.hinet.net 18/06/01 11:58:59