敏捷开发中asp.net MVC的开发次序感受(先开发View?先开发Model?先开发Controller!)

2023-11-11

转载自: http://blog.csdn.net/cheny_com/article/details/6592493


各种思路和顺序都试过。

最开始时先编写Model,毕竟Model是所有一切的基础,再说没有Model,Controller里边用到该怎么办。

后来改成先编写View,View才是用户能看到的东西啊,不知道用户看什么,怎么知道应该提供什么Model。

现在先编写Controller。

在讨论哪种次序最好之前,必须弄清楚“好与不好”的标准。

开发次序好与不好的标准

1. 顺畅

比如编完Model的10个方法,再编Controller的10个方法,再编10个View是不顺畅的。从敏捷的角度看,就是同时开启了多个故事,而这些故事要等到最后才能同时完成,属于不好的实践。

而先编controller中的1个方法,然后马上编会用到的Model,等数据能取出来了(我用LINQ,一般3分钟数据内容就编完了),马上编View,然后调试,就是顺畅的。从敏捷的角度看,就是只开启一个故事,等它结束后再来下一个。

后者最好的地方在于同时能编写/调试/测试/交付的只有大约有限的3~5个文件,思路很集中,也很简单。

2. 不做无用功

我记得当年编写类,二话不说先臆造一堆缺省构造器/参数构造器/“==”/“=”/销毁器……其实到后来发现有一半都从来没被调用过。

Controller是第一个用户能感知的东西(有人认为是View,其实不是,因为如果没有Controller方法,即使输入aspx/cshtml地址也不会出来View的),因此是否会使用一个Model的属性或方法,都在Controller代码里边能带出来的,用到的就编写,不用的就先扔到一边。

之前先编写Model的那段时间,的确留下了很多无用的Model代码。最近改为先编写Controller之后,基本上没有任何没用的代码了。

所以正确的顺序是:先写完一个Action方法,然后定义Model,最后根据Model绑定View;然后是下一个Action……

整体上这两条是我当前评价好与不好的标准,如果项目/团队不同,可能标准也会不同,那么因此得出的最佳顺序也会不同。请灵活参考和使用。

 

点击下载免费的敏捷开发教材:《火星人敏捷开发手册

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

敏捷开发中asp.net MVC的开发次序感受(先开发View?先开发Model?先开发Controller!) 的相关文章

  • 为 CKEditor 指定自定义配置文件

    我正在尝试将 CKEditor 添加到我当前正在开发的页面 但在让它获取我的自定义配置文件时遇到问题 我在 Visual Studio NET 2008 中使用 CKEditor 我需要自定义显示的工具栏 因为 Basic 太少了 而 Fu
  • ASP.Net 将 401 错误代码转换为 302 错误代码

    我有一个自定义处理程序 在某些情况下 我想向用户代理表明他们未获得授权 Http 错误代码 401 if IsAuthorized context context Response StatusCode 401 context Respon
  • 装载组件

    有很多讨论展示了如何从 BIN 和 GAC 加载程序集 我的问题更笼统 我很想知道程序集加载是如何工作的 举例来说 在BIN文件夹中我们可以有 A dll A dll config A dll config 文件可能如下所示
  • 将图像添加到 asp.net 中的链接按钮

  • 如何使用c#获取服务器端元素的innerhtml(内部有另一个服务器端控件)

    如何使用c 获取服务器端元素的innerhtml 内部有另一个服务器端控件 或者使用 Visual Studio 2010 设计电子邮件正文的最佳方法是什么 我有一些 C 代码用于发送电子邮件 支持 html 正文 所以我正在寻找一种逃避硬
  • ASP.NET ascx 与 aspx - 您是否重用用户控件?

    我们的团队正在开发一个相当大的 ASP NET Web 项目 该项目最初从 ASP NET 1 0 开始 并多次移植到所有新版本的 NET 我们广泛利用了用户控件 ascx 但现在回想起来 我怀疑这是一个好的决定 这些控件中的一小部分可以通
  • 如何在浏览时检查客户端是否安装了 SQLNCLI10 提供程序?

    我有一个 C 网站 允许客户端从其 PC 直接连接到远程 SQL Server 数据库 通过使用第 3 方 ActiveX 控件绕过 Web 服务器 我最初使用的是SQLOLEDB提供商并且运行良好 客户端位于内部网络中 使用 Window
  • 如何在 MVC5 中创建两种类型的用户?

    我正在创建 MVC5 应用程序 并且已经在使用 ASP NET Identity 来创建用户 因此 我已经有了 AspNetUsers 表 每当用户注册时 我都会在那里获得一个条目 我还有一个管理员角色 我可以手动指定哪个注册用户是管理员
  • 如何实现Tabbar中每个选项卡的搜索动作

    我有一个页面 TabBar 中有 2 个选项卡 如下所示 class SearchByCityOrPerson extends StatefulWidget SearchByCityOrPerson Key key this title s
  • 如何获取 HtmlGenericControl 的属性值?

    我创造HtmlGenericControl像这样 HtmlGenericControl inner li new HtmlGenericControl li inner li Attributes Add style list style
  • 在 MS word .docs 中插入 MathMl 、 Tex 或 LaTex 方程?

    我一直在寻找 C 中 Net 的一些 dll 用于在 MS Word 中插入任何 MathMl Tex 或 LaTex 方程 我尝试了一些类似 DocX 的工具 但它们失败了 你知道吗 或任何提示如何做到这一点 谢谢 Word 2007 可
  • Web.config 在 Azure 部署期间发生(大幅)更改

    部署到 Azure 后 我不断收到服务器错误 应用程序无法运行 所以我在实例中做了一个远程桌面 发现 web config 被彻底修改了 这是怎么回事 我以为 web config 是按原样打包的 相反 整个配置已被替换 当我用原始的 未改
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • 实体框架中对象属性中的 NULL 值

    Tables Article Author Comment 1篇文章和1位作者可以有 评论 数据库中有 1 篇文章 1 位作者和 1 条评论 问题是 该代码 myBD my bd new myBD var articles by bd Ar
  • ASP.NET 显示 SVN 修订号

    我在 Stack Overflow 页脚中看到显示了 SVN 修订号 这是自动化的吗 如果是的话 如何在 ASP NET 中实现它 其他语言的解决方案也是可以接受的 确保该文件有 svn keywords Rev Id 然后把 Rev 在那
  • include 内的 ASP.net 代码不执行

    我已经很长时间没有涉足服务器端了 但在我看来 嵌入在包含的代码文件中的脚本应该正常执行 由于某种原因 情况似乎并非如此 注意 下面显然是一个基于我的调试尝试的简化实现 实际上 我在实际项目中还得到了其他包含平面 HTML 和 JavaScr
  • 扩展授权属性

    我实施了 CustomAuthorization 属性基于 Authorize 属性 我的属性如下所示 public class CustomAuthorizeAttribute AuthorizeAttribute public eUse
  • 由于不支持“暂停”命令,Selenium 操作“move_to_element”在 Safari 中不起作用

    在自动化测试期间 下一个命令在 Safari 浏览器上失败 ActionChains driver move to element searchInput perform 例外 InvalidArgumentException 消息 遇到按
  • 如何从 GridView TemplateColumn 单击触发 UpdatePanel?

    我有以下情况 我的所有控件都在页面上的更新面板上 这些控件之一是 GridView 该 GridView 在标题模板字段上包含一个复选框 以进行全部选中 autopostback 是 true 但是当检查更改时 没有任何更改 更新面板会触发
  • 如果项目包含多个文件夹,如何使用 Add-Migration

    我想Add Migration使用我的 DbContext 但出现错误 The term add migration is not recognized as the name of a cmdlet function script fil

随机推荐

  • Python基础概念

    什么是Python Python是什么 首先我们先来看百度百科对于Python的解释 由此可见 我们知道了python是一门编程语言 Gudio van Rossum 就是Python这门语言的祖师爷 Python发展历程简介 接下来我们来
  • Python——迭代器

    迭代器 迭代是Python最强大的功能之一 是访问集合元素的一种方式 迭代器是一个可以记住遍历的位置的对象 迭代器对象从集合的第一个元素开始访问 直到所有的元素被访问完结束 迭代器只能往前不会后退 迭代器有两个基本的方法 iter 和 ne
  • matlab pburg,现代数字信号处理——AR模型

    1 AR模型概念观 AR模型是一种线性预测 即已知N个数据 可由模型推出第N点前面或后面的数据 设推出P点 所以其本质类似于插值 其目的都是为了增加有效数据 只是AR模型是由N点递推 而插值是由两点 或少数几点 去推导多点 所以AR模型要比
  • Python内置函数filter用法小结

    filter被称为高阶函数是有道理的 filter self args kwargs Docstring filter function or None iterable gt filter object Return an iterato
  • MySQL基础篇-第18章_MySQL8其它新特性

    第18章 MySQL8其它新特性 讲师 尚硅谷 宋红康 江湖人称 康师傅 官网 http www atguigu com 1 MySQL8新特性概述 MySQL从5 7版本直接跳跃发布了8 0版本 可见这是一个令人兴奋的里程碑版本 MySQ
  • Android Studio实现智能聊天机器人

    项目目录 一 需求分析 1 业务需求分析 2 模型需求分析 3 界面需求分析 二 开发环境 三 聊天功能业务实现 1 申请机器人身份标识 2 搭建聊天界面布局 3 搭建聊天条目布局 4 封装聊天信息实体类 5 编写聊天列表适配器 6 实现智
  • C++11多线程std::thread的简单使用

    文章转载自http blog csdn net star530 article details 24186783 在cocos2dx 2 0时代 我们使用的是pthread库 是一套用户级线程库 被广泛地使用在跨平台应用上 但在cocos2
  • SQL--多表查询(多表联查,如:LEFT JOIN、LEFT JOIN、LEFT JOIN、UNION ALL等)

    1 常见多表连接的三种方式 LEFT JOIN 左连接 查询左表所有数据和右表与左表属性值相等的记录 SELECT FROM TABELONE A LEFT JOIN TABELTWO B ON A id B id RIGHT JOIN 右
  • MySQL索引和性能优化

    索引 MySql底层的数据结构主要是基于Hash 和 B Tree 如果一个B tree的树高时3的话 那么非叶子节点2层 叶子节点1层 非叶子节点 16 1024 8 6 1170 非叶子节点两层 1170个元素 如果是两层 那么元素数量
  • logback和slf4j的使用之encoder和Layout

    一 encoder介绍 1 encoder 主要工作有两个 将一个event事件转换成一组byte数组 将转换后的字节数据输出到文件中 2 encoder组件是在0 9 19版本之后才引进来的 在以前的版本中 appender是使用layo
  • 计算sinx=x-x^3/3!+x^5/5!-x^7/7!+.........

    计算sinx x x 3 3 x 5 5 x 7 7 include stdio h include stdlib h include string h include math h int main float sum t int i x
  • Driver not loaded Driver not loaded(QT打包后在别人的电脑上运行出现这个错误)解决方法

    Driver not loaded Driver not loaded QT打包后在别人的电脑上运行出现这个错误 解决方法 出现这个错误 导致的原因有很多 所以不妨先试试我找的这种解决方法 我也是试过了很多方法 这种方法也许不适合所有人的错
  • 微信小程序 live-pusher 实时音视频录制 组件

    完整微信小程序 Java后端 技术贴目录清单页面 必看 实时音视频录制 v2 9 1 起支持同层渲染 需要用户授权 scope camera scope record 暂只针对国内主体如下类目的小程序开放 需要先通过类目审核 再在小程序管理
  • HTB-Tier2- Unified

    HTB Tier2 Unified Tags Web Vulnerability Assessment Databases Injection Custom Applications Outdated Software MongoDB Ja
  • Element ‘aop:before‘ must have no character or element information item [children], because

    报错的XML配置
  • centos8用阿里云安装yum源

    Centos8用阿里云装yum源 首先ping外网 ping baidu com能通就可以开始做了 阿里云yum源设置官方文档 https developer aliyun com mirror centos spm a2c6h 13651
  • Blender几个简单建模

    吉普车 这里车窗添加了玻璃材质 看起来更真实 简易台灯 可以设置成自己喜欢的形状 颜色 酒瓶 这是还没有上色的 啤酒瓶大多数都是绿色的 一把红色的椅子 个人喜欢红色系列的 就添加了红色 以上都是简单的模型 初学者还需要继续努力
  • Ajax&JavaScript&css模仿百度一下模糊查询功能

    1 效果 如下图所示 我们在输入大学时 程序会到后端查询名字中包含大学的数据 并展示到前端页面 用户选择一个大学 该大学值会被赋值到input表单 同时关闭下拉表单 当页面展示的数据都不符合条件时 用户点击空白处 可关闭表单 2 前端 2
  • 微信小程序案例分享

    微信小程序 后台管理类 1 社区团购小程序 2 音乐播放器小程序 3 家具商城小程序 4 二手交易小程序 5 疫苗小程序 6 智慧停车小程序 7 读书小程序 8 美食小程序 前后端分类 管理后台类 1 企业招聘 2 客户关系管理系统 3 试
  • 敏捷开发中asp.net MVC的开发次序感受(先开发View?先开发Model?先开发Controller!)

    转载自 http blog csdn net cheny com article details 6592493 各种思路和顺序都试过 最开始时先编写Model 毕竟Model是所有一切的基础 再说没有Model Controller里边用