[攒分贴】.net你向误区的深渊走了多远

wangchao1982 2008-07-29 06:07:21
加精
其实我觉得把题目换成“程序设计你向误区走了多远”。可是想想既然是发在.net社区了,还是改成目前的名字吧。
首先声明一点:我说的仅仅是个人的观点,不说憋得慌,您要是看的不爽,私下里骂两句的了。但是别说出来。这和意淫还是“真淫”一样。前者你是好人,后者你就是坏淫^_^
1)被用烂了的“接口”,其实interface本身只是用来规范子类的。当然我承认:随着时代的发展,我们会给事物赋予新的职责,但问题是你给事物赋予了太多的职责本身是否合适。就像现在的“小姐”这个词一样,这本来能算是一个褒义词的,结果时代进不了,它被划定到“绝对的,及其无耻的贬义词”阵营了。interface也处在一个及其尴尬的位置,因为它被赋予的职责太多了,多到了让人觉得会压垮interface的地步:今天弄一个“转换”,隐藏具体实现;明天弄一个“依赖注入”,实现什么松耦合。我们不觉得太残忍了么?它本身就是用来规范子类,而现在却被绝对的本末倒置了。甚至让人们觉得interface的定义有问题了。
2)已成“弃子”的parameter(dataadapter的输入参数),因为推崇“依赖注入”的人都觉得“看到一堆的parameter就烦。我觉得说出这种话的人,绝大多数偶读是从java转过来的,要不就是根本没用过sql server数据库。其实输入参数本身是sql server解决注入攻击的最好办法之一(另外一个就是存储过程,其实存储过程本身也要靠输入参数支持一把的),因为sql server可以在一个command中执行多个sql语句的,而oracle不可以,所以有人就鼓吹oracle如何如何了,在这点来说并不是Oracle本身比sql server好,而是Oracle在这点上偷懒了。或许您会不同意,说出如何如何的观点,那我问您:在一个有自增列的表中我插入了一条记录,然后获得这个id。sql server是“平地一声雷”一次搞定,而Oracle却要“脱一次裤子”才行。
4)过分的追求“松耦合”,甚至很多人都把“无耦合”当成最终目标了。虽然很多人都在鼓吹“依赖注入”,甚至把懂这个东西、在项目中使用了这个东西当成一种荣耀当成一种资本。但是有一点是肯定的:不管是“依赖注入”还是所谓松耦合(把松耦合和依赖注入放到一起不合适),其本身并没有改变耦合的本质,只是把以前的一步走变成了两步走或者是n步走了。一步走3米能做到,但是肯定不合理,但是3米走10步恐怕只有变态才会觉得好。而松耦合也是这个道理:你到底是要把“3米”松到“几步”中?“依赖注入”可以看做是把原来的一步变成了3步:第一步:我想上你。第二步:等等我去配置文件中看看给你配置了没有。第三步:不好意思没您的事。分层固然是符合N多的设计理念,但是分层本身却违背了“追求简单”的这个最基本设计理念。所以我们必然要在这两者上做一个折中,但是很遗憾,很多人都已经忘掉了这点,甚至觉得自己要是能够在目前成熟的架构下弄出一个说服别人的一层来是件很光荣的事情。除此之外,我还想从另一个大家很讨厌,却从始至终都摆脱不了的角度来说这第四点:哲学的角度。哲学中有这样一点:“没有完全独立的事物”,如果大家记性好应该记得在学校里,老师还拿鲁宾逊漂流记说事来着。所以从哲学的角度来说“松耦合”本身就是对哲学的挑战。而“无耦合”就是对哲学的挑衅,这是绝对不可能实现的。所以我奉劝那些战斗在“如何把耦合松一松”第一线的兄弟们,对哲学的挑战是有极限的。而任何超越这个极限的东西都是不可能实现的。所以我觉得:合理的架构 = 适当耦合度与设计简单的最佳折中,而不是一味的夸大“耦合度”或者是设计简单
...全文
4813 211 打赏 收藏 转发到动态 举报
写回复
用AI写文章
211 条回复
切换为时间正序
请发表友善的回复…
发表回复
zghanhailiang 2011-08-28
  • 打赏
  • 举报
回复
路过,学习学习
forwin 2011-07-05
  • 打赏
  • 举报
回复
08年的还推荐啊
dreamzyl 2011-06-03
  • 打赏
  • 举报
回复
学习,支持。
wllllll 2010-12-17
  • 打赏
  • 举报
回复
//使用存储过程执行SQL字符
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
SET @SQLString = 'SELECT @Text AS [Text], @Data AS [Text]'
SET @ParmDefinition = '@Text nvarchar(500), @Data nvarchar(500)';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @Text = 'Text', @Data = '12345'


依赖注入?
第一次听到这样的称呼, 其实这些人看到C#这样的SQL写法的时候, 开心坏了.
最后不过就是一堆菜鸟根本没研究透SQL导致的.
C#不过是直接使用sp_executesql语句而已.

ASP都能用这样的技术, 其实这些人..太笨了..



suiyishijie 2010-12-02
  • 打赏
  • 举报
回复
蛮好的
MarsHands 2010-12-02
  • 打赏
  • 举报
回复
看一下
猪头肉刺身 2010-05-24
  • 打赏
  • 举报
回复
顶!!!
ecoders 2010-05-19
  • 打赏
  • 举报
回复
写得好,深有体会
ityyccm 2010-02-05
  • 打赏
  • 举报
回复
.net
ajian_ 2010-02-04
  • 打赏
  • 举报
回复
哲学的角度来说“松耦合”本身就是对哲学的挑战。而“无耦合”就是对哲学的挑衅,这是绝对不可能实现的


很喜欢这句话!


tly0512 2009-11-28
  • 打赏
  • 举报
回复
感悟不错!!
felixz2010 2009-11-19
  • 打赏
  • 举报
回复
不错
zhuailigen 2009-09-30
  • 打赏
  • 举报
回复
滴滴答答
amwicfai 2009-04-01
  • 打赏
  • 举报
回复
[Quote=引用楼主 wangchao1982 的帖子:]
合理的架构 = 适当耦合度与设计简单的最佳折中,而不是一味的夸大“耦合度”或者是设计简单
[/Quote]

完全支持,有过度设计经历的人体会更深刻
toploveall 2009-03-28
  • 打赏
  • 举报
回复
没看懂,是嘛意思
ZKM_ZHANG 2009-03-27
  • 打赏
  • 举报
回复
up
marvintang 2009-03-17
  • 打赏
  • 举报
回复
回帖是一种美德!每天回帖即可获得 10 分可用分!
lcyhjx 2009-03-11
  • 打赏
  • 举报
回复
觉得楼主有点愤青,
interface本身没有错, 一些设计模式也没有错,错的是怎么用它.
就象一把菜刀,它的作用是用来切菜的,现在你看到某些人用菜刀在削水果.然后你就批评菜刀的不是.而且在某些特定的条件下,用菜刀可能更方便(例如我们要将苹果一切两半).

另外pet shop 4.0只是一个范例,向我们展示一些业务场景该如何设计,它只是提供一个参考.关键在人,100个人看4.0, 会有100个结果
GT7466 2008-11-12
  • 打赏
  • 举报
回复

"其实interface本身只是用来规范子类的"
"依赖注入"
===========================================
针对接口编程,不针对具体实现. 这里的接口是 超类型 的意思.
aab 2008-10-24
  • 打赏
  • 举报
回复
谁都没有错,用的人才有错。
加载更多回复(190)

13,190

社区成员

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

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