工作中需要维护一个 JFinal 项目,太他妈痛苦了

2022-01-20 13:07:00 +08:00
 GM

这个所谓“轻、快”的框架,各种基础设施除了简陋就是简陋,从而导致了业务层代码也是各种随便就来,各种 Map 到处传,各种 record (实际上也是个 Map 的简单包装)到处传,各种全局函数到处调用,写的时候是轻松了,维护的时候,要多恶心有多恶心。

太恶心了

5551 次点击
所在节点    Java
32 条回复
nielinjie
2022-01-21 08:46:15 +08:00
类似的框架,是以快速出货为目标的,满足短期迭代、业务试错需求。如果验证完毕决定保留相关业务,需要逐渐重写为别的结构。
sagaxu
2022-01-21 09:49:10 +08:00
@nielinjie 快速 demo 用 rails 或 PHP 不是更快?
sagaxu
2022-01-21 09:51:29 +08:00
@ajaxfunction 第一次写的时候快,过几个月再改,省下来的时间都还回去了。除非一直只做新项目,且做完就扔不再碰。
VKRUSSIA
2022-01-21 20:02:58 +08:00
这个跟 Jpress 是一个东西?
GM
2022-01-21 21:35:11 +08:00
@VKRUSSIA
JPress 基于 JFinal 开发,所以........
lawler
2022-01-22 04:58:56 +08:00
年轻真好,如同他们不知道火箭直径为什么和马屁股一样大似的,因为并没有什么用。

我一度以为 springboot 是抄袭的 jfinal 。

14 年初开始用 jfinal 接单并选型为公司开发底座,一个类五六行代码就能跑起来一个可以和数据库交互的 web 应用,两三行代码就能实现一个 C 端的 ORM 接入,同期国内外还有谁?届时 springboot 这个词组是什么,谷歌都不知道。大约 16 年中旬开始,springboot 开始在国内爆发。好在 jfinal 打了无 xml 的 entity 映射 /框架实现 /约定配置等这些设计基础。学起来 springboot 基本上一两天就上手了。但当时的 1.x 生态也令人发指,多数情况下,依然也要引入依赖和 xml ,jfinal 却还欣欣向荣。

如这些设计。
tojson -> responsebody
url param -> restful
route controller-> request mapping
model -> mapper
etc ...

如果你拿 jfinal 和 ssh/ssm 框架比。你会觉得什么是极致。和 springboot 比,你依然会觉得清爽。
只有和 spingboot 生态比,你才会觉得简陋。

当然,现在他在被时代抛弃。
go233
2022-01-22 08:50:49 +08:00
人的问题别怪语言。
GM
2022-01-22 21:53:24 +08:00
@lawler g 华森岛帆高 1111111111111111111111111112222222222222222222222222222222233333333333333333333333334444444444445555555551111111111111222222222222222222333333333333333333333666666666777777777777777777••88888888888888888888811111111111111111122222223333334444444444444444455666666666666777777777777777777711122333334555……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………一;;;;;;;;;; QQQQQQQUUUUUUU;;;;;;;;;;;P0000000;UHJYITTKLGGGGGGGGGGGGGGGGG;;;WWWWWWWWLL;HRTRRR55IIIIIIIIIIIIIIIIIIIII666666666666666TFHRYTIIIEDDD BVMBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGYYYYVBDMFD,JL.KMJJJJJJJJJJJJJJJJJJJJGGGGGGGGGGGGGGGGGGGGJJJJJJJJJJJJJJJJJJJJQQQQQQQQQQQQQQQQQQQQJJJJJJJJJJJOUUU;FDFP;;P888U'''HLTTT [[[[[[[[[[ 000000000000000000H''''''''''''''''''''''''''''''''"""""""".XXXXXFFFFFFV OAL
极致、清爽指的是到处都是全局函数调用带来的使用上的“简单、清爽”吗?
lawler
2022-01-23 16:47:11 +08:00
@GM #28
所以你认为声明式注入比全局函数简单清爽?反射加 ioc 很 ok ,显式调用不 ok ?

想象不出来你对其他开发框架的理解。
GM
2022-01-24 09:13:58 +08:00
@lawler
声明式注入粗一看是比全局函数麻烦和复杂,但是在现代框架的加持下,并不会麻烦多少,多了一点点麻烦带来的是全面性的扩展能力。JFinal 风格的全局函数调用看起来简单,但是意味着很快整个项目导出都是全局函数互相调用,都是蜘蛛网。

如果你这点都想不明白,或者说从没碰到这种场景或需求,我觉得没有继续沟通的必要了。

````
lawler
2022-01-24 11:31:54 +08:00
@GM #30
哎,你毕竟不是做设计的。跟你掰扯也没意思。只是告诉你,jfinal 这个框架的设计面罢了。

btw..
springboot 源码超 7 成代码依赖静态方法,从你写 springboot 应用的第一行静态代码 SpringApplication.run(arg)开始。有空多看看源码,学学设计也挺好。
GM
2022-01-24 13:34:17 +08:00
@lawler 该用静态的用静态,该注入的注入,这个不难理解吧?

我举个例子,JBoot 调用 mq 的方法是:

Jboot.getMq().publish("channel", "jsonobject");

用起来很简洁吧?
好了,这代码过一个一年半载后,有个新需求,想发送消息的时候,额外附加一些扩展认证 header 信息,你瞬间就傻眼了。因为他这代码已经写死了就只能这么简单地发送简单信息。你要么整个抛弃这种写法,自己写个 Service ,然后现有代码里几十上百个地方一个一个改,要么自己去修改框架代码。

如果是 Spring 风格的依赖注入,我定一个新的 Service 替换掉就好了,十来行代码。

JFinal 里到处都是这种问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829440

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX