------以后根据这个改网站
我工作于IntelliGrape, 一个专用Groovy&Grails开发项目的公司. 本文列举了我们Grails项目遵循的几个基本的最佳实踐, 它们通过邮件, Stack Overflow, 博客, podcasts, 和公司内部的讨论收集. 按照controller, service, domain, views, taglibs, 测试和其它分类.
本文的建议主要针对Grails 2.0.
Controller
1. 不要让Controller扮演多个角色. 控制器的角色仅仅是接收请求, 检查权限等, 复杂逻辑由domain或service处理, 并根据期望的格式返回HTML,XML,JSON等. 尽量保持控制器简单. 不要在控制器中处理复杂业务逻辑, 查询, 更新等.
2. 如果控制器只是关于某个domain类的逻辑, 请使用标准的命名约定 "<DomainClass>Controller".
3. 避免代码重复 - 將重复编码封装成闭包. 查看这里获取更多信息.
4. 將复杂的数据绑定拆成 common object. 你也可以编写富 common object. 建立 common object 的继承结构有时会很有用.
Service
1. service是处理复杂业务逻辑的正确地方. 如有需要, service可以很容易的暴露为RESTful/SOAP服务.
2. service默认开启事务, 若无持久化操作, 也可以设置成非事务的.
Views
1. 尽量保持views简单 -- 避免在模版中处理复杂业务逻辑
2. 使用布局模版, 子模版保证外观风格一致.
3. 让模版遵循DRY原则. 把重复的东西封装成模版.
4. 使用自定义标签, 封装通用的UI元素
Domain
1. 处理 domain 自身业务逻辑的好地方. 任何适用于单个domain, 与外部依赖较少的逻辑都可放入. 但是确保逻辑只针对domain本身 -- 更复杂的需要多个domain协作的业务逻辑应方到service中.
2. 重用业务逻辑或拆分复杂业务逻辑, 使用命名查询并以链式组合, 就像jQuery的函数链式调用一样.
3. 不要在domain目录中混入普通的工具类或值对象, 把它们放到src/groovy目录中. 如果这些类需要支持数据验证, 可以使用@Validateable注解.
4. 为domain对象使用显示的构造函数, 避免无效的状态而仅构造有效的对象.
Taglib 标签库
1. 确保每个标签轻量. 标签可以调用其它标签, 最好將标签拆成几个可重用的子标签.
2. 标签库被认为是MVC结构中view的一部分, 但也可以放入domain类中, 根据需要收集或格式数据显示. 但还是要遵循domain类最小依赖原则.
3. 它应包含比渲染更多的逻辑; 尽管少量的渲染是好的.
4. 使用多个自定义标签更好的组织页面
测试
1. 单元测试优于集成测试, 运行和更快. 一个例外是, 测试service, 集成测试的信息会更有用.
2. 在单元测试中, 使用 save(validate:false)保存未完整加载的对象.
Config.groovy
1. 所有的环境参数在Config.groovy指定, 如serverURL,环境相关的常量,等等.
2. 將个性化配置(如本地的数据库用户名,密码)放到单独的<Local>Config.groovy文件中, 并加入版本管理工具忽略列表中,这样团队中的成员的个性设置不会相互影响.
3. 可能有些争议, 但我们还是建议设置 grails.gorm.failOnError = true, 这样当保存对象发生验证错误时, 异常可以立即抛出. 这样的话, 你就不需要检查保存是否成功了.
4. 在 Grails 2.0 中, 默认 “grails.hibernate.cache.queries = true", 这样查询缓存自动生效, 而不用添加 cache:true. 把值设为false, 仅在需要的时候使用缓存.
其它建议
1. 理解并坚持Grails约定, 因为Grails是基于约定驱动的. 使用这些约定能让开发更轻松.
2. 为了组织Grails工件, 不要这么做 com.businessname.appname.domain 和 com.businessname.appname.controller. 否则在FooController中, 我们不得不最终导入Foo类. 既然Grails已经將这些工件放到指定的目录中, 它们就不需要再被拆分. 查看blog.
3. fixtures 插件可以帮助你在开发环境中初始化数据.
4. 將应用的可重用部分做成插件. 这些插件可以单独的测试和随时从主项目中移除. 如果你认为该插件对其它开发者有帮助, 也可以发布到公共的插件仓库中.
5. 修改脚手架模块生成工件, 定制自己的页面和控制器生成策略.
6. 宁可用动态 scaffolding 而不选静态scaffolding, 直到行为不能再满足你的需要. 例如, 仅仅是 "save" 操作需要修改, 你就仅需覆盖 "save" 操作, 而其它操作代码还是可以在运行时动态生成.
7. 最好在DataSource.groovy中提供 re-connection properties 配置.
8. 确保总是包含外部配置文件(甚至是空文件), 这样可以在生产环境中覆盖原有配置选项而不用重新打包.
9. 如果需要对使用的插件做少量修改, 如修改quartz monitor的list.gsp文件, 你可以不用直接修改插件里的文件, 而是重新定义一个相同的目录和包来覆盖. 它比插件的优先级高.
10. 所有domain的自定义验证器可以放到单独的文件中, 这样可以提高重用度, 其它domain有需要也可使用. 这里有个例子.
11. 应用要安装插件, 最好在BuildConfig.groovy中定义, 而不是使用install-plugin命令. 查看该贴获取详细信息.
分享到:
相关推荐
10. **Grails最佳实践** 提供一系列开发最佳实践,包括代码组织、错误处理、日志记录和安全性建议。 总之,“Grails A QuickStart Guide”将帮助你快速掌握Grails框架,从创建第一个应用到构建复杂的业务系统。这...
通过《Grails权威指南》,你可以学习到如何利用Grails的强大功能来开发高效、可扩展的Web应用,同时也了解到如何利用Groovy语言和Grails框架的最佳实践,提升你的开发技能。这本书深入浅出地讲解了Grails的各个方面...
在实际开发中,了解并遵循Grails的最佳实践至关重要,例如,合理划分领域模型、充分利用GSP标签库、使用Service层处理业务逻辑等,能有效提高代码质量和维护性。 总结,Grails 2.4.4 作为一个成熟的Web开发框架,...
【Grails项目搭建详解】 Grails是一个基于Groovy语言的开源Web应用框架,它简化了开发过程,尤其适合快速构建动态网站。在Eclipse中搭建Grails项目可能相对复杂,...不断更新插件和学习最佳实践将有助于提升开发体验。
《Grails企业Web应用开发与部署》 在现代软件开发领域,Grails作为一个基于Groovy语言的开源Web应用框架,以其高效、灵活和强大的特性深受开发者...在实际工作中,结合最佳实践,能够进一步提升开发效率和应用性能。
此书的出版时间为2009年9月,提醒读者注意:技术是一个快速发展的领域,随着时间的推移,一些技术细节和最佳实践可能会有所变化。因此,在阅读这样的书籍时,建议将书中的知识和最新技术动态结合起来,以确保所学的...
"Grails 中文参考手册" 是一套详细的 Grails 学习资料,涵盖了框架的所有核心组件、最佳实践和使用方法,帮助开发者快速掌握 Grails 开发技能。 总之,Grails 是一个强大而灵活的 Web 开发框架,结合 Groovy 的优点...
1. 学习入口:对于中文开发者来说,中文文档降低了学习Grails的门槛,帮助理解和掌握Grails的基本概念、框架结构、开发工具以及最佳实践。 2. 快速上手:文档通常包含安装指南、教程、API参考等,为开发者提供从零...
《Grails从入门指南(第二版)》是一...这本书是Grails新手的必备读物,它不仅覆盖了基础概念,还包含了实用的开发技巧和最佳实践。通过深入阅读并实践书中的例子,你将能够熟练地使用Grails构建高效、可维护的Web应用。
通过阅读这份《Grails 1.1 中文文档》,开发者能够全面理解Grails框架的架构、工作原理和最佳实践,从而高效地开发出高质量的Web应用。尽管版本已经是1.1,但很多核心概念和设计原则在后续版本中仍然适用,对于学习...
9. **最佳实践** - 使用Scaffolding快速生成CRUD操作 - 利用Grails的拦截器(Filters)进行全局操作 - 编写清晰的Service层代码,保持Controller轻量 - 定期运行静态代码分析工具,提升代码质量 通过上述内容,...
- **Testing**:书中会讲解单元测试、集成测试和功能测试的最佳实践。 - **Security**:如Spring Security插件的使用,保护应用程序的安全。 - **Deployment**:包括本地、测试环境和生产环境的部署策略。 通过...
10. **最佳实践与案例研究**:通过实际项目案例,学习如何在Grails中应用最佳实践,如代码组织、模块化设计、错误处理和日志记录等。 综上所述,“Groovy轻松入门—Grails实战基础篇”将带你走进Groovy和Grails的...
总的来说,Grails 5.1.2是一个成熟的框架,旨在提供一个高效、灵活的开发环境,通过集成最新技术和最佳实践,帮助开发者快速构建高质量的Web应用。无论是对于初学者还是经验丰富的开发人员,这个版本都提供了许多...
10. **最佳实践与案例研究**:《Grails in Action》很可能包含实际项目案例,展示如何在不同场景下应用Grails,分享最佳实践和技巧。 通过阅读这本书,读者将不仅掌握Grails框架的使用,还能了解到现代Web应用开发...
通过这份《Grails 入门大全》的学习,你将能够理解 Grails 的核心概念,掌握基本的开发流程,进一步深入探索 Grails 的高级特性和最佳实践。无论是初学者还是有经验的开发者,都能从中受益,提升开发效率,创建出...
在IT行业中,Grails是一个基于Groovy语言的开源Web应用框架,它简化了Java平台上的开发流程。在Grails项目中,版本控制是至关重要...这对于任何Grails项目来说都是一个必不可少的工具,有助于实现代码管理的最佳实践。