2014年的项目的总结(二) 谨防过度设计 别为显示技术而搞复杂 杀鸡焉用牛刀?

 14年最后一个项目无疑收获巨大,自己掌握的很多东西都得到了检验,而其中暴露出来的问题更让我得到教训,特别是开始走入的过度设计的误区,为了显示技术什么复杂用什么,现在想想真是后背发凉。这样的经历,像我这样的新手估计很容易犯吧。

上图

开始的架构

一开始做设计时,为了统一所谓的对外接口,解决耦合问题,防止action层与service层多对多的复杂关系,使用façade(外观模式)将对应模块的多个service做了下轻封装,想象中的层次关系是左边这样的,将左边换成右边,怎么看都是右边更顺眼,所以加了façade层。

可是 事实上,当前项目的关系是这样的

完全没那么复杂,为什么要加facade层,这是我突然想问自己的,它有这个必要吗,而且这个项目也无需再扩展,没必要考虑业务复杂后的扩展性,杀鸡焉用牛刀。

设计太多的分层,搞个Hello world,都要来五六个文件的话,这项目也就玩不下去了。

其实,敏捷开发的思路就是答案,简单,最简单的解决方案就是最好的解决方案,够用就行,在一次次的重构中提升架构的水准。

按照这个思路,我把底层的框架选型也改了,一开始用hibernate,嫌不够灵活,换了mybatis后,配置还多了不少,最后全不用,直接用上自己以前写的一个仿hibernate的持久层框架durable,采用约定优于配置,完全零配置,甚至注解都不需要,而且满足当前需求。

数据库也不用oracle,以前是因为oracle用得多,习惯搞什么都用oracle,其实也没这个必要,oracle太重量级了,mysql小多了,足以满足需求。

这个也让我想到包括我在内的同学们的简历上,项目里描述了那么多高大上的技术,本来就是简单的玩意,非得为了显示自己技术水平,什么复杂用什么,一问反而啥也不知,这就是装X啊,我开始也是抱有这种想法的,学到什么,一股脑用上去,反而误入了歧途。

做技术,还是实事求是的好。。

参考

http://blog.csdn.net/jakelong/article/details/18793043

时间: 2024-10-10 12:36:42

2014年的项目的总结(二) 谨防过度设计 别为显示技术而搞复杂 杀鸡焉用牛刀?的相关文章

Vue/Egg大型项目开发(二)数据库设计

项目其他的实现都好说,不过为了梳理好思路和架构首先要搞定数据库 设计 这里推荐使用processon.com,因为是个在线的作图平台可以很方便的和他人合作. 设计出数据表后,就可以使用sequelize来生成相应的orm对象,然后sync到数据库中从而生成对应的数据表. 数据表类图 这是我项目的设计图,后期可能还会有修改. sequelize定义对应的orm对象 在model文件夹中定义对应的orm对象 比如user.js中如下,值得注意的是我们添加了一些额外字段以应对后期表中字段的添加. 代码

2014年的项目的总结(一)

关键词 敏捷开发 一前言 8月份,那时正式学习各种令人愉快的开放技术的时候,主要是围绕敏捷开发这玩意. 读了重构,测试驱动开发的艺术两本书. 把玩了两个小框架junit,mockito 学习项目构建的maven,持续集成的jenkins等工具,主要是读<maven 实战>一书,特别值得一提的是,书年代有点早,那时jenkins还是hudson,这导致的问题的,搭建maven和hudson的持续集成环境时,因为maven版本是3了,与hudson这老玩意合不上,new project老是报错,百

【原创】岗位作业书-产品/项目经理(二)

产品/项目经理岗位作业书 --------------------- 岗位作业书配合是<开发工作流程>的重要附件,详细说明了每个岗位在开发过程中每个阶段的工作 一.每日例行工作: 1.早上开始上班后立即召开朝礼 2.写朝礼纪要并发给相关人 3.在日志中制定今日工作计划并挂到主线 4.上禅道检查任务完成进度是否与计划相符 5.上禅道检查Bug修复情况是否正常 6.处理各种临时任务,加入到禅道的任务列表,如:甲方提出的紧急任务等 7.如有必要,与技术经理.测试经理沟通 8.发现开发进度有严重延误的

iOS开发——项目实战Swift篇&amp;swift 2.0项目开发总结二(开发常用)

swift 2.0项目开发总结二(开发常用) 一:相册中选择相片到App指定位置 随 着相机像素的提高,实际用户选择的图片都是很大的,有的高达5.6M,如果直接使用用户选着的图片,非常消耗内存,并且也用不到这么高像素的图片,可以当 用户选着好图片后,在UIImagePickerController对应的代理方法中,先将图片进行重新绘制为需要的大小,在设置给iconView 1 /// MARK: 摄像机和相册的操作和代理方法 2 extension MeViewController: UIIma

网站日志分析项目案例(二)数据清洗(MiniMapreduce)

网站日志分析项目案例(二)数据清洗 一.数据情况分析 1.1 数据情况回顾 该论坛数据有两部分: (1)历史数据约56GB,统计到2012-05-29.这也说明,在2012-05-29之前,日志文件都在一个文件里边,采用了追加写入的方式. (2)自2013-05-30起,每天生成一个数据文件,约150MB左右.这也说明,从2013-05-30之后,日志文件不再是在一个文件里边. 图1展示了该日志数据的记录格式,其中每行记录有5部分组成:访问者IP.访问时间.访问资源.访问状态(HTTP状态码).

“扒项目”的历程(二):系统分析

新项目终于步入系统分析阶段了,经过了许多的业务用例分析,我们把需求.业务.业务处理流程基本理清,对项目要做什么事.能做什么事更有把握了.业务分析的初衷就是这样,如何把较复杂的系统需求把握清楚,把业务需求分门别类,让一个门外汉一看就知道这个系统能够做成什么事. 现在我们就要做系统分析,系统分析是对业务分析的细化.抽象.泛化等等的工作.下面针对“扒项目”的历程(一):业务分析中,“查询A系统数据业务用例实现”这一业务用例实现来看看能提取出什么样的系统分析结果. 关键词:项目管理, 项目立项, Ent

Oracle数据库12cR2(项目实战之二):Linux系统安装Oracle12.2

oracle数据库12cR2(项目实战之二):linux系统安装Oracle12.2 一.课程主题: 风哥Oracle数据库教程12cR2(项目实战之二):在linux操作系统安装Oracle12.2. 二.项目需求: 某单位新版HR人力资源系统最近上线,需要在Linux系统上安装一套Oracle12cR2数据库,并创建数据库,提供给业务系统使用. 三.实施步骤: 2.1.Oracle数据库12cR2 for Linux项目介绍与调研 2.2.Oracle数据库12cR2 for Linux实施

代做毕设,代做GIS毕业设计,GIS项目,GIS二次开发,毕业设计

代做毕设,代做GIS毕业设计,GIS项目,GIS二次开发,毕业设计: 代做毕设,代做GIS毕业设计,GIS项目等: 常年从事桌面GIS,ArcGIS数据处理分析等: ArcMap插件开发(.Net,Python): QQ:624030189 纯个人写手,不是商业人员,保证质量! 您是不是还在为做GIS毕业设计苦恼? 没有思路,数据不会处理,不会编程? 软件环境不会安装? 您是不是还在为科研项目中用到GIS而头疼? 图像不会处理,不会制图? 不会写脚本(Net,Python),不会用工具箱进行批处

从头开始写项目Makefile(二):自动推导

[版权声明:转载请保留出处:blog.csdn.net/gentleliu.Mail:shallnew at 163 dot com] 上一节的Makefile勉强可用,但还写的比较繁琐,不够简洁.对每一个.c源文件,都需要写一个生成其对应的.o目标文件的规则,如果有几百个或上千个源文件,都手动来写,还不是很麻烦,这也不够自动化啊. 这样,我们把生成.o目标文件的规则全部删除掉,就是这样一个Makefile文件: target_bin : main.o debug.o ipc.o timer.o