Convention Over Configuration大家都已经耳熟能详了, 这东西好不好那? 好, 绝对是好, 不过, 还要看用的人到底怎么用, 或者说是否真的理解了它到底是怎么回事, 说两三个小场景...
发现某个框架虽声称COC是其主打特色, 但某些功能模块在实现的时候却没有将COC执行彻底, 比方说, 大部分情况下可以根据URL取得的信息, 现在依然要求开发人员在某个配置文件中进行统一配置, 虽然这个功能侧重就是统一配置和管理某些URL映射, 但key和value都一样的情况下, 完全可以让框架根据某一Convention自动提取, 而没必要重复配置这些key和value的值, 实际上,只有说key和value不同的时候,进行一下配置就可以了, 你说,这里的COC尴尬不?
JUnit4之后引入了@Test用于标注测试用例的测试方法, 这东西好不好? 好, 让你可以在一处管理所有的信息, 而且像强类型支持, IDE的支持等等好处都可以享受到, 再也不会因为把testXXX拼错成tsetXXX之类并导致测试用例的“怪异”行为而头疼了,不过, 事情真的像宣称的或者说看起来的那么美嘛? 你用@Test标注的测试方法依然需要声明吧?测试方法依然需要有一个表意清晰的名称吧? 按理说, 每个测试方法的名称以test开头不就是个Convention嘛? 现在使用@Test代替这个Convention, 那COC是不是又感觉很尴尬呀? 我怎么就觉得直接敲方法名要比敲方法名和@Test这个Annotation更便捷那? 拼写错误? come on, 数数大家还是会的吧? 上一次跑了12/12个测试方法,你添加个新的测试方法之后,run的时候还是12/12, 你难道不知道问题出在哪里嘛?
部门另一个架构师开发了个GenericDao框架,用于简化大家的日常开发,提高开发效率, 好东西吧? 绝对好东西, 不过, 在用的时候,发现点儿不方便的地方。当然了,这个不方便不是框架设计者本身的问题,可能更多是局限于现有的技术前提条件。其实, 几年前就有过类似的想法, 打个比方, 假设我声明如下接口定义:
public interface XXXDao<T>
{
List<T> findByProperty1AndProperty2(String propertyOne, String propertyTwo);
}
那么,按照我最初的想法, GenericDao框架内部就应该直接根据参数名称构建个map,然后传给sqlmap作为调用的参数(假设采用IBatis做数据访问),也就是说, 按照某种Convention, 方法参数的名称与sqlmap中的参数名称是一一对应的, 这样,开发人员只需要声明个数据访问方法就可以了,简单直接, 不是嘛?
不过那,现实是残酷的,呵呵,编译的时候, 参数名称这样的信息在编译的时候, 默认是忽略掉的, 这也就是为啥通过反射API只能得到个参数类型,而得不到参数名称。虽然新的java版本一直吵吵着要加入这个信息,但目前来看,还是不行,所以, 我们就只能变通一下, COC中的第一个C(Convention)搞不定了, 只能启用一下第二个C(Configuration), 通过某个Annotation,比如@Param("name"), 来告知框架怎么关联方法调用与sqlmap调用参数之间的映射关系。你说, 这里的COC尴尬不?我觉得最尴尬了,绕都绕不过去, 除非你再加个Post-Compile的过程或者Pre-Compile的过程, 在Java Source的基础上做做手脚,然后带到编译后的成果物中去(class文件中,或者自动生成的某种配置信息中)。
不过那,最理想的还是从“根儿”上解决这个问题, 你JavaClassFormat都把三个规则中的两个默认[1]启用了,为啥就不启用这最后一个[2]那?如果怕编译后的class文件膨胀,那咱权宜一下,只对interface类型做这个事情好不?
嗯, 就说这么些了, 套用当下已经用烂了的一句话, “COC自己其实一点儿都不尴尬,只是寂寞”, 哈哈
[1] line number tables for each method和the name of the source file
[2] local variable tables for each method)
分享到:
- 2009-08-25 11:04
- 浏览 992
- 评论(2)
- 论坛回复 / 浏览 (2 / 4223)
- 查看更多
相关推荐
Coc,全称为“CoC.nvim”,是 Vim 的一个插件,它提供了丰富的代码补全、诊断、格式化等功能,增强了 Vim 的功能,使其更接近现代 IDE 的体验。在 `.vim` 文件夹中,通常包含的是 Coc 插件的配置和相关设置。 Coc ...
COC阵型复制工具.apk
COC手册
标题"coc.zip_COC_coc coc_zip"可能是指一个包含与"coc"相关的MATLAB代码或项目文件的压缩包,其中"COC"可能是"Channel Orthogonal Coding"的缩写,暗示了这个项目可能涉及到了正交编码,这在OFDM系统中用于提高抗...
COC阵型复制工具-1.1.apk
**Webpack CoC:前端配置的约定与最佳实践** 在前端开发中,Webpack 是一个至关重要的模块打包工具,它能够将各种资源(JavaScript、CSS、图片等)打包成优化过的静态资源,以适应现代Web应用程序的需求。`webpack-...
COC七版规则空白卡CY20.02.1.xlsx
coc安装文件
COC七版半自动人物卡v1.9.5(PC端)(1).xlsm
本文将深入探讨 Vim 的配置相关知识,包括 `.vimrc` 文件、`coc-settings.json`、`coc.nvim` 插件以及相关插件管理。 首先,`.vimrc` 是 Vim 的配置文件,它存储了用户自定义的快捷键、设置和行为。通过编辑 `....
根据提供的文件信息,我们可以了解到这份文档主要提供了CoC(推测为GoC)编译器的下载地址,并且已经经过验证,确认下载过程中没有病毒风险。接下来,我们将对这份文档涉及的关键知识点进行详细的解读与扩展。 ### ...
COC源码手机游戏源码ISO 安卓都可以运行 ,请注意,我只是个搬运工,出现什么问题与本人无关。要完整端要等日后。
安卓模拟器 挂coc专用 ios版转到电脑上最好用的版本,没有之一!
《Coc__delphi.与汇编入门》是一本针对初学者的教程,旨在帮助新手了解并掌握Delphi编程语言以及汇编语言的基础知识。在IT领域,掌握这两种语言能够提升程序员对计算机底层机制的理解,从而更好地进行系统级编程和...
972462998272873小曦Coc免费助手V4.0.9.apk
:CocInstall coc-marketplace 用法 :CocList marketplace列出所有可用的扩展 :CocList marketplace python以搜索名称包含python扩展名 构型 marketplace.npmsio :使用进行搜索,默认为false 执照 麻省理工学院
**vimrc配置-coc** 在 Vim 编辑器中,`.vimrc` 文件是个人配置文件,用于定制编辑器的行为和功能。`coc.nvim` 是一个流行的 Vim 插件,它提供了丰富的代码补全、错误检查、代码导航等功能,极大地提升了 Vim 的开发...
COC口服避孕药人流后临床应用.ppt
"cocos2dx开发的coc"可能指的是一个使用Cocos2d-x框架开发的游戏项目或者工具,而"Cocos_Ring"可能是这个游戏项目中的一个关键模块或者是资源包。 在Cocos2d-x的开发中,C++是核心编程语言,它提供了丰富的API和...
unity仿COC部落冲突游戏项目完整源码.rar