惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Forbes - Security
Forbes - Security
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
SegmentFault 最新的问题
Y
Y Combinator Blog
Recorded Future
Recorded Future
博客园 - Franky
I
InfoQ
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
Cyberwarzone
Cyberwarzone
The Register - Security
The Register - Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
雷峰网
雷峰网
P
Palo Alto Networks Blog
G
GRAHAM CLULEY
Cloudbric
Cloudbric
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
MongoDB | Blog
MongoDB | Blog
F
Full Disclosure
Google DeepMind News
Google DeepMind News
Recent Commits to openclaw:main
Recent Commits to openclaw:main
C
Check Point Blog
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
T
Threat Research - Cisco Blogs
U
Unit 42
N
Netflix TechBlog - Medium
The Cloudflare Blog
Spread Privacy
Spread Privacy
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队
T
Troy Hunt's Blog
Engineering at Meta
Engineering at Meta
H
Heimdal Security Blog
TaoSecurity Blog
TaoSecurity Blog
C
Cybersecurity and Infrastructure Security Agency CISA
T
Tenable Blog
B
Blog
S
Securelist
H
Hacker News: Front Page
Google Online Security Blog
Google Online Security Blog
G
Google Developers Blog

博客园 - 文野

DDD自问自答 数据结构(C#语言版)——栈和队列 数据结构(C#语言版)——线性表 2011一月的三个故事 我想要的2011 我的2011的三个故事 《悟透JavaScript》中的知识点 用Windows Live Writer写博客 论单一职责 对象结构 由做梦想到的 2009第一帖,测试用Word2007发布博客 一点一点学ASP.NET之基础概念——事件 应用框架的设计与实现学习手札系列(持续更新) 未解决的问题(持续更新) 应用框架的设计与实现学习手札之类工厂服务——反射 一点一点学ASP.NET之基础概念——委托 一点一点学ASP.NET之示例——HttpModule 示例 一点一点学ASP.NET系列(持续更新)
我们是不是把MVC、ORM等技术的主次颠倒了?
文野 · 2010-05-11 · via 博客园 - 文野

     长时间以来,发现很多人,包括自己,在学习新技术时,出现很多本末倒置的现象,MVC与ORM就是两个比较典型的例子。

     实现与理论分开。很多时候,理论思想的关注点与实现的关注点不一定是一样的,往往甚至某种思想,实现了某种框架,框架的作用是把边边角角的细节抽象出来,减少开发者在这些细枝末节上的精力,把注意力,精力花在核心思想的实现上。而我们往往去学习某种框架,然后就陷在框架的实现上,而忘了本来框架所支持的思想。

    很多技术的名字顺序是非常有意义的。

    比如MVC,首要的关注点是模型(M),其次才是视图(V)。控制器(C)只是用来连接模型与视图的。而我们很多人在视图与控制器上花了大把的精力,但有谁去注意过模型呢,就算有处理模型的,大多也都是在为视图服务,严重的本末倒置。

    再来说ORM,这个更严重,甚至可以说很多人的使用就是一个错误。为什么要ORM?是为了解决O与R的阻配失抗。ORM,是对象模型到关系模型的映射。而我们有多少人在使用的所谓ORM是这样吗?很多都是先建表,然后生成对象,那是ORM吗?那应该叫ROM吧?顺序错了,往往就跟这个思想技术的本意相违背了。现在有很多号称强大的代码生成工具,也称全面支持ORM,完全面向对象。但在我看来,领域模型,业务逻辑是不可生成的,可生成的大部分通过抽象也是能得到解决的。我承认这些生成工具的强大,但在生成代码时,请别在说ORM,因为你做的是ROM!