使用和滥用惯例优于配置模式
时间:2012-6-27
构建基于惯例白系统有一个危险是,代码惯例可能是不完整的,从而影响到系统的功能,比如,我们这个消息转发器在将宿主名转化为Ruby类名时做得不够彻底。我们知道代码可以将russolen.com这样的简单宿主转化成RussOlsenDotCom。但是如果我们向当前系统传入诸如iclgis.com这样的宿主名,就会得到icl-gisDotComAuthorizer这样的非法类名,在一般情况下,你可以通过允许类名重载惯例的方法来解决这个问题,在我们示例中,可以允许每个谁类在需要的时候重载默认的宿主名映射,并指定它所需要的宿主。
另外一个可能的问题源是,当一个系统使用了很多惯例之后,它对于新用户来说可能合成为一个谜团。使用配置文件虽然在编写和维护的时候非常繁琐,但是它的确以某种方式提供了认识系统工作流程的线索(虽然可能很难以理解)。相反,一个设计优良的苦于惯例的系统,需要通过文档来说明系统工作流程。
另外,请记住当惯例应用得更深入,更复杂时,你需要更完整的单元测试来保证惯例工作正常,此外,一个采用不一致的,或错误的,惯例的系统可能会引起其他一些令人困惑的问题。