1.关于解耦
这个词自从接触设计模式以来,便整天萦绕耳边,以前觉得不错,但是最近越来越觉得像苍蝇了,能多恶心你就多恶心你.
本来解耦无可厚非,高内聚,低耦合谁都懂的道理,但是现在,这个词真的被滥用了.
解耦不过是一个用来迷糊人的手段,是追求过度设计的人显摆的工具
只有真正的内聚,没有绝对解耦,但凡你在某个地方切断联系,那么你必然会在另一个地方重新产生联系
通常来说,切断联系的地方就在于方法的调用(或者对象的实例化),而重新产生联系的地方就在于框架
物体被打碎以后,需要重新黏合在一起才能使用
代码被解耦以后,同样需要再次耦合起来完成功能
物体的黏合除了人还需要粘合剂
而对于代码来说,同样需要粘合剂,这里的粘合剂就是配置文件或者注解
本来嘛,不变的东西,用基类实现,不同的行为用子类复写,对于外界的调用,可以定义一个接口
现在倒好,搞一大堆配置文件,声称是解耦,可是配置文件改动的地方没有十分之一
把一个功能拆分到五六个方法里面,声称是为了代码复用,除了你用,别人根本不知道在什么地方
一个包含了全部逻辑的方法,拿到哪里都能用,现在呢,解耦了,复用去吧,离开框架你屁都不是,还解耦呢!
以前代码的整体感没有了,现在就是把一个完整的躯体给直接给肢解了,把关注的部分留下来,其他的都送给框架了,
送些衣服可以,可是如果连肉都送了,那么你的代码还真解不了藕,因为没有了血肉就是死
比较Struts1和Struts2两种框架,我承认后者配置更简单,但是谁要跟我说它有优点,简直是TMD的放屁:
1)与Web容器完全解耦
解个屁耦,难道Struts不是一个Web框架么?哪里能少得了Servlet API?没有Servlet,Struts屁都不是,
敢问有几个利用Struts而不是做Web开发的?
就算你解耦又如何?我还不是需要Request对象和Response对象?我使用了ContextUtil也能算解耦呢?
做Web开发又去和Web解耦,真是闲得蛋疼!
2)更容易测试,Web工程里面的逻辑有几个是脱离了Web环境来测试的?
不需要Web环境的代码段我可以单独放一个方法里定义,用得着使用Struts2来解耦?
3)Struts2比Struts1更容易理解,完全是放屁
不看文档,鬼知道从哪里获取Request对象和Response对象!
而且一个action又做M又做C,干脆你连V也做了,不更省事?不过话说这样的话,我还用得着框架?
2.关于接口
接口无非一种规范,我可以实现,也以不实现,我可以实现你想要的,也可以实现你不想要的;
不过用来约束的一种玩意儿,可是某些人却认为接口优于一切,没有接口就意味着不规范
于是,凡是逻辑处理类,一律xXXXX和xXXXXImpl,神马都是接口
接口是挺好,但是真的需要到处都用么?你的逻辑永远都不会改变,你整个接口到底是为什么?
仅仅是为了规范么?但是没有接口就不规范么?
3.关于IOC
自从Spring将IOC发扬光大以后,便言必称IOC,因为有了IOC,连接口都可以不用了
现在的Java已经走火入魔了,当C++返璞归真趋于平淡的时候,Java不知何事开始流行起奇技淫巧来了
仿佛学Java如果你不懂IOC,如果你不懂DI,如果你不懂AOP,如果你不懂Annoation,如果你不懂AspectJ,如果你不懂cglib,你就out了
IOC离不开配置文件,现在或者可以说离不开注解
真的很方便么?效率的低下尚且不说,调试的麻烦姑且不论,但是代码的理解还有可读性么?
你不跳出框架来看,你永远搞不明白它的逻辑
本来简单的几行代码就可以搞定,现在却要不停地在代码和配置文件直接跳来跳去
或者从一堆堆Annoation中找出你所需要的那几行.
4.关于Annoation
本来很反感XML的配置文件,仿佛和我一样的人大有人在,所有现在Annoation开始盛行
不过现在看来我倒是有点觉得XML没有那么反感了
至少,XML能让我感觉到代码的清爽,可是那么多的Annoation,真是惨不忍睹啊?
XML可以避免重新编译,而Annoation呢?
答案就是避免XML,直接写代码也能避免XML,需要Annoation干嘛呢?
又是为了俗不可耐的解耦?算了吧?即使解耦你就不需要写代码了?
改一段逻辑清晰的代码,比改一个个完全不明所以的注解容易多了
除非你去看注解的源码,或者相信注解的注释文档
分享到:
相关推荐
《Java开发实战经典》是一本以JAVA EE开发为目标的书籍,它强调了学习Java的核心在于理解和运用面向对象的思想。在开始阅读此书之前,读者需要理解JAVA SE与JAVA EE之间的关系,即JAVA SE是JAVA EE的基础,掌握了...
《Java开发手册》是Java开发者的重要参考资料,尤其最新的1.5.0华山版更是集大成之作。此版本在前一版的基础上进行了大量的更新和完善,旨在帮助开发者编写出更高效、更规范的代码,提升整体项目的质量和可维护性。 ...
9. **Java开发工具**:介绍Eclipse、IntelliJ IDEA等集成开发环境(IDE),以及Maven或Gradle构建工具的使用。 10. **实战项目**:通过实际项目案例,让读者将所学知识应用于实践,提高解决实际问题的能力。 除此...
【内容简介】 本书深刻且通俗地揭示Java Web开发内幕,使您由内而外地明白使用Java进行Web应用开发的全过程——从XML基础知识到HTTP详述及相关体验,从用Tomcat配置Web站点到HttpServletResponse和...
SSH作为Java开发中的主流框架,让我领略到其强大的功能和灵活性。Struts负责表现层,Spring处理业务逻辑,Hibernate则优化了数据持久化。在实际项目中,我不仅学会了如何配置和调优这些框架,更懂得了如何将它们有机...
Java 开发求职简历模板知识点总结 Java 基础 * JAVA 基础扎实:Java 是一种基于对象的程序语言,它的基础知识包括 Java 语法、数据类型、变量、运算符、控制结构、函数、数组、面向对象编程等。 * Java 语言的特点...
《基于Java开发的2048游戏源码详解》 2048是一款深受程序员喜爱的数字合并游戏,它的规则简单却富有挑战性。在这个项目中,我们将深入探讨基于Java编程语言实现2048游戏的源码。通过分析源码,我们可以了解Java在...
### Java笔试经典题知识点详解 #### 一、面向对象的基础与Java基础知识 1. **面向对象的四大特征**: ...以上是关于Java笔试中涉及的一些经典知识点的详细解析,希望对准备Java相关笔试和面试的读者有所帮助。
Java开发文档,特别是针对JDK 1.8的中文开发文档,是Java程序员的重要参考资料,尤其对于初学者和想要深入理解JDK 1.8新特性的开发者来说,它的价值不言而喻。这份"jdk1.8中文百度.CHM"文件包含了一系列详细的技术...
这让我明白,对于初学者来说,很多问题早已有前人解答,我们不应畏惧提问,而应积极寻找答案。随着技能的提升,遇到的问题可能会更复杂,这时就需要更深入的研究和探索。 实习让我感受到编程的乐趣,Java的学习不再...
在Java工作室的学习过程中,我体验了从理论到实践的转化,明白了在编程领域,单纯依赖理论是远远不够的。动手实践是检验和巩固知识的关键环节。工作室学习强调自我驱动,不再像课堂那样有老师全程引导,而是需要我们...
以下是一些核心的Java开发规范要点: 1. **命名规范**:变量、常量、类和方法的命名应清晰、具有描述性,并遵循驼峰命名法或下划线命名法。例如,变量名`employeeName`,常量`MAX_EMPLOYEES`,类名`EmployeeManager...
Java开发的QQ聊天源码是一个宝贵的资源,它为我们揭示了如何使用Java编程语言构建一个类似于QQ的即时通讯应用。在深入探讨之前,我们要明白,QQ是一个功能丰富的社交平台,包括但不限于文字聊天、群组交流、文件传输...
在Java开发中,输入/输出(Input/Output,简称IO)操作是必不可少的一部分。Java提供了一套完整的IO系统来处理各种数据流的读写操作,包括字符流、字节流以及随机访问文件等。本文将深入探讨Java IO系统的各个组成...
《图书网站系统:纯Java开发详解》 在当今数字化的时代,图书销售已经逐渐从实体店面转向线上平台。本文将深入探讨一个基于Java技术的小型图书销售网站系统,它集成了前后台功能,为读者和管理员提供了便捷的服务。...
《Java开发的人力资源管理系统详解》 在信息技术领域,Java作为一种广泛应用的编程语言,因其跨平台、面向对象的特性,常被用于开发大型企业级应用,如人力资源管理系统(HRMS)。本文将深入探讨基于Java开发的人力...
·自Java语言起源始,循序渐进,知识点剖析细致且每章配备大量随堂练习,让你步步为营,学得透彻、练得明白 ·拒绝晦涩难懂的呆板教学,宋老师语言生动幽默,举例形象生动深入浅出,迅速让你把握问题本质,四两拨千...
刘峰的博客说明已经很详细了, 本人旨在帮助刚入门微信公众平台开发苦于无法着手而迅速上手准备的, 有不明白的请联系我或微信号guestsun。 导入整个工程到eclipse, 压缩包里面有hellochat.war文件部署到百度bae云...
在Java开发的实习过程中,我深刻体会到编程不仅是技术的运用,更是团队协作和问题解决的艺术。实习期间,我担任了项目组的一员,这让我体验到了实际项目开发中的角色转换,从单纯的学子转变为有责任的“程序员”。在...