`

视图中的代码

    博客分类:
  • UI
阅读更多
在视图中放一点代码是完全没问题的——这可以充分利用视图的动态特性。但是,如果把很多代码放在视图中,那就是很糟糕的编程风格。
原因有三。
其一,视图中放的代码越多,就越容易诱惑你把应用程序的功能写在视图中。这是很糟糕的事情,业务逻辑应该放在控制器或者模型对象中,这样你可以到处复用它们——当你添加新的视图、从不同的角度来展现应用程序时,你就会发现复用的好处
其二,html.erb其实就是HTML,编辑它们就等于编辑HTML文件。如果你用专业的设计工具来创建页面布局,它们会操作这些HTML文件,把代码放在里面只会让事情变得更麻烦。
其三,视图中嵌入的代码很难被测试;而将这些代码抽取到辅助模块中则可以将它们彼此隔离、逐一测试。

做java的时候,我一直坚持不在jsp页面里写代码,甚至连最简单的代码我都要用自定义标签封装起来,以前虽然这么做,但不明白其中的原因。最近在学ror,作者解释得很清楚了,特此摘录。

PS:原本即使在一个200k代码行的项目里,我也坚持了“视图里不能有代码”的原则。。。本书的作者写道“用JSP的行话,这种代码叫做scriptlet。同样,要是看到你在模板中写这种代码,很多人会怒不可遏。别理他们——他们都是教条主义的受害者。”

原来哥一直是“教条主义的受害者”,呜呜。。。
分享到:
评论
2 楼 kyfxbl 2011-01-13  
额。。前半部分是书里说的,摘录一下

后半部分是我自己的体会。。
1 楼 ywencn 2011-01-12  
没看懂楼主要表达什么。。

相关推荐

    MVC视图代码逻辑MVC视图代码逻辑

    本文将深入探讨MVC中的视图代码逻辑。 **1. 视图(View)的角色** 视图是用户界面的呈现部分,主要负责展示数据。在ASP.NET MVC框架中,视图通常由 Razor 或 Web Forms 视图引擎创建的HTML页面组成。视图不处理...

    删除视图VB代码

    删除视图VB代码

    水平可视图代码(matlab)

    水平可视图代码(matlab)

    如何在Oracle或SQLServer中对视图(view)加密以保护视图中的SQL代码?

    因Oracle暂不支持对视图(View)的加密,在实际工作中有时需提供给第三方只读账户,为保护知识产权,可用文中所述方法防止第三方账户查看视图(View)中的SQL代码。

    切换视图源代码

    在上述代码中,ViewControllerA实现了`ViewControllerBDelegate`协议,并在`didSelectSwitchToViewControllerB`方法中执行了视图切换。当用户在ViewControllerB上触发切换按钮时,会调用`switchButtonTapped`方法,...

    微信小程序学习demo:视图控件View、ScrollView、Swiper(源代码+截图)

    微信小程序学习demo:视图控件View、ScrollView、Swiper(源代码+截图)微信小程序学习demo:视图控件View、ScrollView、Swiper(源代码+截图)微信小程序学习demo:视图控件View、ScrollView、Swiper(源代码+截图)微信...

    ios自定义视图代码

    也可以在代码中动态创建和添加到父视图上。 ```swift let customView = CustomView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) view.addSubview(customView) ``` 六、自定义视图的性能优化 为了保持...

    可视图算法(VG)代码

    可视图算法(VG)代码

    有限穿越可视图代码(matlab)

    有限穿越可视图代码(matlab)

    iPhone 开发多视图切换 代码

    - 为Segue分配一个标识符并在代码中引用,调用performSegue(withIdentifier:sender:)方法触发切换。 ```swift performSegue(withIdentifier: "MySegueIdentifier", sender: self) ``` 5. **代码创建视图控制器*...

    实现三视图代码

    这是一个根据根据所给图形得到其三视图的代码

    XML布局和代码混合使用控制视图

    在Java或Kotlin代码中,我们可以通过 findViewById() 方法获取XML布局中定义的视图对象。例如,我们可以这样获取上面XML布局中的TextView和Button: ```java TextView textView = findViewById(R.id.textView); ...

    matlab中关于三维重建的源代码,《计算机视觉中的多视图几何》匹配源代码

    本资源提供了基于MATLAB的三维重建源代码,这些代码是针对《计算机视觉中的多视图几何》这本书中的匹配算法实现的。MATLAB作为一种强大的数值计算和可视化工具,因其易于编程和丰富的库支持,常被用于计算机视觉的...

    MFC切分视图完整代码

    在本文中,我们将深入探讨MFC(Microsoft Foundation Classes)中的切分视图功能,并通过一个实际的案例——"MFC切分视图完整代码"来理解如何在一个单文档项目中实现这种布局。这个项目将视图分割成两部分:左侧为...

    在一个窗口中嵌入视图,视图中嵌入另一个视图

    视图的大小和位置可以通过对话框资源中的控件尺寸设置,或者在代码中动态调整。 压缩包中的"View_in_Dialog"文件可能是示例代码或者项目文件,它包含了实现这种嵌入视图的源代码。通过查看和学习这些代码,开发者...

    实现三视图及透视图的小段代码

    代码中包含了对`graphics.h`库的引用,这是Borland图形界面的一部分,用于在控制台应用程序中进行图形输出。该库提供了诸如初始化图形环境、绘制线条等基本图形操作函数。例如,`initgraph()`函数用于初始化图形模式...

    视图中使用控件vc++代码

    文件列表中的`ViewControlBox.cpp`和`ViewControlBoxView.cpp`可能包含了视图类的实现,其中`ViewControlBoxView.cpp`可能是视图对象的具体实现,包含了如何在视图上创建和管理控件的代码。`ViewControlBoxDoc.cpp`...

    视图分割源代码

    在这个源代码中,我们可能会找到以下关键组件: 1. 图像预处理模块:对输入图像进行增强、归一化或降噪处理。 2. 特征提取模块:提取图像的关键特征,如色彩、纹理、边缘或深度信息。 3. 分割算法实现:可能包含基于...

    vc单文档缩放视图代码

    在这个场景中,“vc单文档缩放视图代码”是指实现SDI应用中视图部分的缩放功能的源代码,这对于学习和开发具有图形用户界面的VC程序非常有用,特别是对于初学者来说。 在MSVC中,视图(View)是MFC(Microsoft ...

    vb月视图代码

    总结,VB月视图代码是关于如何在VB程序中有效利用MonthCalendar控件来构建一个功能完备的日历视图。通过理解和掌握上述知识点,开发者能够创建出用户友好且功能强大的日程管理应用。在3.10月视图这个文件中,可能...

Global site tag (gtag.js) - Google Analytics