类能改善分层,但不能保证分层

缪军 2010-02-15 04:53:06
加精
1、层可以有n个类组成,但是没有类也可以创建很好的分层应用:类不是分层的必要条件;
2、面向类的程序可以像其他程序一样在逻辑上纠缠不清;
3、非面向类的但是良好分层的程序或许比没有分层的面向类的程序更加可维护;
4、类可以实现更精致的高级分层:类是分层的充分条件;
(引自:Tyson Gill《Visual Basic6:Error Coding and Layering》)

...全文
1474 76 打赏 收藏 转发到动态 举报
写回复
用AI写文章
76 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangqiangyi 2011-09-04
  • 打赏
  • 举报
回复
hhahha
wbrcqu 2010-06-28
  • 打赏
  • 举报
回复
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
小拽 2010-05-29
  • 打赏
  • 举报
回复
我是新手看看我的等级就知道啦,好好学习。。。
sy19871120 2010-04-18
  • 打赏
  • 举报
回复
帮顶啊
itliyi 2010-02-25
  • 打赏
  • 举报
回复
引用 5 楼 wuyq11 的回复:
分层只是一种工程方法,可以用新的实现来替换原有层次的实现;
有利于标准化;
利于各层次之间的逻辑复用。
学习了
缪军 2010-02-24
  • 打赏
  • 举报
回复
70楼梁威同志,如果不认同别人的观点,那就谈谈自己的见解,
贬低别人是很容易的,也是很容易让自己有快感的,
但是你知道吗?
当你用手指着别人的时候,有3个手指是指着自己的,也就是:指责别人之前先看看自己,
做法很简单,你至少可以看看自己在CSDN的发帖,
虽然你发帖不多,但是也能看出你的成长历程、心路历程,
其实有网络真好,给了自己很多照镜子的机会。
bluedoctor 2010-02-23
  • 打赏
  • 举报
回复
类和分层都是对代码管理的一种方式,也可以说是对代码复用的管理方式。

举例来说,比如一个公司的人员组织结构,按照部门来分可以划分为行政部,人力资源部,财务部,销售部、技术部等类别;按照职务级别来分可以分为普通员工,部门经理,总经理等不同的层次。

所以,可以认为“类”是对代码的纵向划分;“层”是对代码的横向划分。
当然,类和层的关系不是单一的绝对的,可以只有层没有类,也可以只有类没有层,这都取决于你的代码规模和复用程度。如果你的代码很少而且功能简单,不会被其它地方使用到,没有任何类和层的代码也是有可能的,所以大家争论要不要类,要不要分层,是没有多大意义的,一切要看使用的具体环境。

例如现在炙手可热的“函数式编程”语言,它可以不使用类的,甚至没有类的概念,函数是这门语言世界中的一等公民。但是这些函数式语言却也能够开发出巨型复杂的系统,比如著名的细菌检测诊断专家系统,它就是用老式的LISP编写的。这样的系统,你恐怕用简单的分层概念都没法描述它。

所以我认为,手工对代码进行“类”和“分层”的划分,都是比较出几的代码管理方式;真正高级的代码管理方式,我觉得是第5代计算机语言的代码管理方式:既不是面向对象,也不面向过程,而是面向问题,代码只是用计算机描述事物规则,事实的一种工具罢了,代码之间的关系是不用你手工去梳理组织的,因为真实世界的很多事物是你用简单的分类,分层就可以表示和解决的吗?远远不是!

根据“金字塔原理”,分类和分层只是对事物的一种“演绎推理”过程,而人的思维过程还有一种重要的方式,就是“归纳推理”过程。现有的计算机还只能进行“演绎推理”,这是由“冯-诺依曼”计算机体系结构决定的,所以它现在还只能解决世界中很有限的范围内的事情。

说到这里大家明白了吧?分类和分层只是一种简单的思考问题的方法而已,而这之外,还有很多很强大的思考问题的方法,在这里争论怎样分层怎样分类还有意义吗?

所以,我的观点是,容易阅读,容易理解,容易维护,容易使用,简洁高效的代码就是好代码,不要管它有没有类,有没有分层。如果非要在这个问题上争论,那就是“刻舟求剑”了。
liang8305 2010-02-23
  • 打赏
  • 举报
回复
这个版是什么版?“分析与设计”

先分析后设计
在没有问题作为研究对象的情况下讨论方法的好与不好,简直就是吃饱了没事干;
jin20000 2010-02-23
  • 打赏
  • 举报
回复
分层不分层之类的问题就和哪种语言最好之类的问题一样,真的没什么实际意义,任何理论的对错都是要结合特定的条件的,也就是要结合实际问题......所以废话了
嗷嗷叫的老马 2010-02-22
  • 打赏
  • 举报
回复
顶,学
vladimirtepes 2010-02-22
  • 打赏
  • 举报
回复
分层在大多数情况下是好,但在某些资源性能严重受限的场合下就是悲剧了,比如C51;
凤凰涅檠 2010-02-22
  • 打赏
  • 举报
回复
类不是面向对象的必须品吗?而分层不就是一种方式吗
悠然红茶 2010-02-22
  • 打赏
  • 举报
回复
呵呵,我个人的认识是:分层的本初原因是为了克服人类头脑的局限。我们无法像上帝那样,把所有的细节一下全设计清楚,所以只好划分成若干个抽象层次。而每个层次应该尽量保证抽象一致性,因为有了一致性,就便于设计者和维护者掌控。所以一套设计是否需要分层、怎么分层、分多细,主要取决于你要解决的问题以及你的组员的平均水平。而是否用类来表达你的分层设计,则主要是实现手段上的问题了,你完全可以用面向过程的设计手段,来完成你的设计意图。所以我基本上比较同意楼主的引用。
缪军 2010-02-22
  • 打赏
  • 举报
回复
歪曲别人原意、没有建设性意见的批评是毫无意义的
你们还是多谈点实实在在的,交流技术、分享心得,
还是那句话,看看自己在csdn发过的贴子,就清楚了
缪军 2010-02-22
  • 打赏
  • 举报
回复
56楼引12楼,58楼引56楼,
我来帮你们梳理一下,你们认为:
“废话 -> 岂止是废话,简直不通 -> 岂止是不通,简直误导”

你们说的是什么话呢?你们是不是petshop和代码生成器的粉丝啊?

现实就是很多人建个文件夹放几个class就当分层了,其实逻辑比没做出这个样子还混乱,
宣传这种观点的书籍随手可得,

你们要是不同意就针对这点发表你们自己的看法,别整云山雾罩的,和灌水有啥区别
缪军 2010-02-22
  • 打赏
  • 举报
回复
呵呵,56楼,你曾经职责别人的话恰恰是用于你自己,
还有你和放歌一样,善于曲解别人,再加以批判,当然这是你们的自由,
你们两个的csdn发帖我看了一下,
我试图从当中领会一些你们自己的心得体会,结果的话:呵呵,希望你们自己也看看

58楼,csdn水贴一幅,免了
GSDN00A 2010-02-22
  • 打赏
  • 举报
回复
引用 57 楼 vrhero 的回复:
岂止是废话,简直不通

这个帖推荐的理由如果不是放歌的几段话,那么推荐者居心叵测


岂止是不通,简直误导...
原文有语义环境,贴到这来几句话。 与楼上同感,...不通

理论来源于实践,用抽象术语解释抽象理论,明显不是想把问题讲清,是鼓弄玄虚。

有个让经济术士汗颜的来自民间的“狗屎案例”,诠释GDP之精妙,楼主要多多体会。

搬教条,挖坟贴,休矣
vrhero 2010-02-22
  • 打赏
  • 举报
回复
岂止是废话,简直不通...

好像去对建筑师说“预制构件能改善框剪结构,但不能保证框剪结构”或去对生产流水线设计师说“工控机能改善自动化流水线,但不能保证自动化流水线”,得到的反应可想而知...当然这些话去对建筑工人或产线工人说大概会被膜拜...

这个帖推荐的理由如果不是放歌的几段话,那么推荐者居心叵测...
vrhero 2010-02-22
  • 打赏
  • 举报
回复
引用 12 楼 wanghui0380 的回复:
说老实话,我不是反对你

而是反对现在很多人,把方法学当数学去研究。

方法学不是数学,他是只是策略和手段。

方法学实际是不可复制的,他取决与他要解决问题本身和你所持的策略

事易时移方法学本身不可复制,而我们所能复制的是方法学所代表策略。

所以你要研究方法学就千万别把他当数学公式,这个不是a+b=c,不要把自己陷在那些条条框框里。

这是普遍现象...
hanjoe109 2010-02-22
  • 打赏
  • 举报
回复
啟發挺大,沒以前沒想過類與分層的關系
加载更多回复(53)

13,190

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧