晚上好,
我目前正在德国的一所学术机构(不是大学)获得编程学位。我们也在那里使用Java ee进行Web开发。这个特定课程从使用Servlets开始,并逐步发展到JSP。使用servlet处理业务逻辑,然后使用jsp打印这些结果并使用jsps提供的一些基本功能(例如循环集合)似乎是有意义的。但是最近我们更深入地研究了JSP的世界,并做了一些脚本和类似的事情,这些事情归结为将越来越多的业务逻辑放入jsp文件并完全抛弃servlet。而这种Java代码和业务逻辑的纠缠以及对此的赞誉有点超出我的想象。我一直认为Web应用程序开发的主要目标之一是将主要的业务逻辑与前端事务分开(django及其模板语言在非常好的情况下做得很好)。
我觉得这个想法有点令人难以置信,一方面他们教我们在编写一个主题时要记住松耦合,另一方面我们正在教导我们将越来越多的业务逻辑转移到模板中。 更让我困扰的是,如果一个人搜索一些解决java ee问题的方法,那么大量的结果会显示模板文件中出现大量逻辑的解决方案,这有点证实模板和编程语言的这种混合似乎是在ee世界中做事的公认方式/鼓励有抱负的开发者采用这种做法。
现在从我所听到的情况来看,用于网络的Java似乎不再像以前那么大了,如果你看一下最流行的webapps,几乎没有任何一个在java中实现,但前面提到过方面总是令我惊讶。
因此,这里的具体问题是为什么模板和业务逻辑之间的大量耦合被认为是java ee中的良好实践?
问候, derelektrischemoench
答案 0 :(得分:2)
实际上,这不是一个好习惯。我认为你可以在互联网上找到的许多代码都是以错误的方式编写的,原因有很多:可能它是为了测试某些功能而不是在生产环境中部署而开发的,没有评估松耦合,质量问题等等。而且,对于各种问题,我总是要在互联网上搜索。大多数时候我找到解决方案,缺乏类耦合,不安全的方法等等。重点是:不要把你可以在互联网上找到的代码作为一些事情的例子。只需使用此代码作为您如何解决问题的建议,并在生产代码中应用该代码的改进版本。这不仅适用于JSP或Java,更适用于您可以阅读的每种代码。永远记住,你在谷歌的帮助下找到的代码可能是一个快速的试验和错误"驱动代码永远不会继续生产,永远不会改变。您作为开发人员的工作不是复制和粘贴该代码,而是以尽可能最可维护的方式组织该代码。我鼓励你去看看SOLID原理。对我而言,SOLID原则强制实现解耦和其他有助于编写更好代码的方面,而且在编写真实世界的产品时非常重要,因为将来可能会有很多时间改变它。互联网示例并非旨在改进,只是为了快速理解。