这个所谓“轻、快”的框架,各种基础设施除了简陋就是简陋,从而导致了业务层代码也是各种随便就来,各种 Map 到处传,各种 record (实际上也是个 Map 的简单包装)到处传,各种全局函数到处调用,写的时候是轻松了,维护的时候,要多恶心有多恶心。
太恶心了
1
billly 2022-01-20 13:09:55 +08:00 4
这框架还一堆粉丝呢
|
2
littlewing 2022-01-20 13:13:39 +08:00
不是框架的问题,而是写代码的人的问题,并不是因为简陋,写代码就一定要乱来啊
|
3
PDX 2022-01-20 13:14:00 +08:00 1
这个框架官网主页太丑了,所以我都不愿意去细看。。。
|
4
WhoMercy 2022-01-20 13:17:47 +08:00 2
轻+快 = 耦合
|
5
offswitch 2022-01-20 14:18:28 +08:00
跟我一样,当初第一次接触这个框架,贼 tmd 难受,之前写的人各种炫技,搞得贼恶心。
|
6
hidemyself 2022-01-20 14:24:08 +08:00 1
JFinal 这种快速开发的框架,追求的就是快,一锤子买卖,不用考虑维护的
|
7
urzz 2022-01-20 14:28:23 +08:00 1
公司技术框架定位 JFinal ,就贼恐怖= =
不维护是不可能的,无论是功能迭代还是 bug 修复,都是省不了的。改的时候就看前人写不写文档了,不然遍地的 record 真想死 |
8
GM OP @littlewing 框架定位就是这样,提供的各种接口都是明的暗的诱导你:“直接用 record 、直接用 map 、不要什么 vo 、dto 的”,你想不乱来?实际上就是要违背框架的各种约定,反正左右难受。
|
9
cheng6563 2022-01-20 16:53:26 +08:00 1
@littlewing 这框架就是让你把 Java 当弱类型动态语言用,结果就是两边的优势都沾不上而两边的劣势都沾一身。
|
10
wizzer 2022-01-20 17:43:13 +08:00
试试 nutz ? https://gitee.com/budwk/budwk
|
11
tagtag 2022-01-20 17:52:46 +08:00
跟 PHP 的道理一样,看似简单,反而对编码人要求很高
|
12
Konys 2022-01-20 17:55:07 +08:00 2
同感,2019 年维护过一个 jfinal 项目,前一个写的人一个项目就两个 controller 文件,每个 controller 大约 6000 行左右,所有的业务都在 controller 中完成,当时直接蒙了,编译出来的 class 文件都 7M 多
|
13
retrocode 2022-01-20 19:01:48 +08:00
这种项目一般跟框架没关系,和写代码的人有关系,我才接手了一个 springboot 的项目,同样恶心,直接在 sql 结果里拼接 html 返回,不知道之前哪个老哥的奇葩操作
|
14
GM OP |
15
sagaxu 2022-01-20 20:26:49 +08:00 via Android
极速
妙不可言 zoom zoom zoom |
16
hay313955795 2022-01-20 20:38:38 +08:00
当初有个驻场的开发找我去开发 jFinal 还好我拒绝了 不然这会儿我就在这里抓狂了
|
17
janus77 2022-01-20 21:09:19 +08:00
轻和快的项目本来就不该长期维护。。。。如果立项的时候就考虑到长期维护,本来就不应该用轻快的 jfinal
|
18
james122333 2022-01-20 22:09:47 +08:00
确实是人的问题 轻量好懂都不好好维护 用重量级肯定也好不到哪去
写一堆类并没有比较好维护 开发上容易失焦 改一个功能都要四处找影响点 然后一堆人写的烂命名烂流程 用 map 可以 只是要封装 直接用肯定会疯 |
19
ajaxfunction 2022-01-20 22:33:26 +08:00
我反而觉得 jfinal 就是应该是这样子, 什么叫极速开发? 能少就少,能省就省,
用框架作者的话来说就是 为您节约更多时间,去陪恋人、家人和朋友 |
20
uiosun 2022-01-20 22:34:46 +08:00 1
@tagtag +1 ,长期都是 PHP 爱好者。
后来接触了不少用 PHP 写代码的人之后,才了解一件事: 你以为的 PHP 和 JAVA 、C#、Go 差不多,而且轻便、高测试可用性、好维护; 多数人用的 PHP 和早期 JS 差不多……那就是一堆 x 山!大家最喜欢开发需求(造 x ),最讨厌维护项目(吃 x ) 仔细想想,也是一绝! |
21
nielinjie 2022-01-21 08:46:15 +08:00
类似的框架,是以快速出货为目标的,满足短期迭代、业务试错需求。如果验证完毕决定保留相关业务,需要逐渐重写为别的结构。
|
23
sagaxu 2022-01-21 09:51:29 +08:00 via Android
@ajaxfunction 第一次写的时候快,过几个月再改,省下来的时间都还回去了。除非一直只做新项目,且做完就扔不再碰。
|
24
VKRUSSIA 2022-01-21 20:02:58 +08:00 via Android
这个跟 Jpress 是一个东西?
|
26
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 生态比,你才会觉得简陋。 当然,现在他在被时代抛弃。 |
27
go233 2022-01-22 08:50:49 +08:00 via Android
人的问题别怪语言。
|
28
GM OP @lawler g 华森岛帆高 1111111111111111111111111112222222222222222222222222222222233333333333333333333333334444444444445555555551111111111111222222222222222222333333333333333333333666666666777777777777777777••88888888888888888888811111111111111111122222223333334444444444444444455666666666666777777777777777777711122333334555……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………一;;;;;;;;;; QQQQQQQUUUUUUU;;;;;;;;;;;P0000000;UHJYITTKLGGGGGGGGGGGGGGGGG;;;WWWWWWWWLL;HRTRRR55IIIIIIIIIIIIIIIIIIIII666666666666666TFHRYTIIIEDDD BVMBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBGYYYYVBDMFD,JL.KMJJJJJJJJJJJJJJJJJJJJGGGGGGGGGGGGGGGGGGGGJJJJJJJJJJJJJJJJJJJJQQQQQQQQQQQQQQQQQQQQJJJJJJJJJJJOUUU;FDFP;;P888U'''HLTTT [[[[[[[[[[ 000000000000000000H''''''''''''''''''''''''''''''''"""""""".XXXXXFFFFFFV OAL
极致、清爽指的是到处都是全局函数调用带来的使用上的“简单、清爽”吗? |
29
lawler 2022-01-23 16:47:11 +08:00
|
30
GM OP @lawler
声明式注入粗一看是比全局函数麻烦和复杂,但是在现代框架的加持下,并不会麻烦多少,多了一点点麻烦带来的是全面性的扩展能力。JFinal 风格的全局函数调用看起来简单,但是意味着很快整个项目导出都是全局函数互相调用,都是蜘蛛网。 如果你这点都想不明白,或者说从没碰到这种场景或需求,我觉得没有继续沟通的必要了。 ```` |
31
lawler 2022-01-24 11:31:54 +08:00
@GM #30
哎,你毕竟不是做设计的。跟你掰扯也没意思。只是告诉你,jfinal 这个框架的设计面罢了。 btw.. springboot 源码超 7 成代码依赖静态方法,从你写 springboot 应用的第一行静态代码 SpringApplication.run(arg)开始。有空多看看源码,学学设计也挺好。 |
32
GM OP @lawler 该用静态的用静态,该注入的注入,这个不难理解吧?
我举个例子,JBoot 调用 mq 的方法是: Jboot.getMq().publish("channel", "jsonobject"); 用起来很简洁吧? 好了,这代码过一个一年半载后,有个新需求,想发送消息的时候,额外附加一些扩展认证 header 信息,你瞬间就傻眼了。因为他这代码已经写死了就只能这么简单地发送简单信息。你要么整个抛弃这种写法,自己写个 Service ,然后现有代码里几十上百个地方一个一个改,要么自己去修改框架代码。 如果是 Spring 风格的依赖注入,我定一个新的 Service 替换掉就好了,十来行代码。 JFinal 里到处都是这种问题。 |