常年写 JS,怎样适应 Java ?

2018-04-06 12:13:49 +08:00
 liuxin5959

写了几天 Java,发现处理个 JSON 都好麻烦,以前写 JS 完全没过这事,大家是怎样转变过来这种思维的呢?

8083 次点击
所在节点    程序员
95 条回复
lihongjie0209
2018-04-06 16:16:59 +08:00
@v2dead #39 你把代码写出来就知道为什么不能这么做了
lihongjie0209
2018-04-06 16:19:17 +08:00
直接使用 Map 的问题不在于解析,异常处理, 而在于没有封装, 任意一个改动都会导致大量的代码修改
yaoliyc
2018-04-06 16:24:01 +08:00
@lxy 自由不是没有代价的,java 通过类将数据结构描述清楚集中在一起,js 之类键值对基本分散在各处,各有利弊。
starmoon1994
2018-04-06 16:24:02 +08:00
是 maven 不好用?
还是 Java 提供的基础类库少了?
kennylam777
2018-04-06 16:26:11 +08:00
@lxy 如果你用的 API 都有良好的 documentation, 或者是 Swagger 那種按 API 定義自動生成的, 你應該會覺得把 json 結構寫成 class 會舒服很多

如果寫後台都是隨心所欲的在改結構又不給 doc, 那我才擔心這種設計合作起來會異常麻煩

最怕那種會直接返回不同結構的 API, 奇怪的狀況要動用 json parser 處理而不是 status code, 根本是浪費大家時間
deadEgg
2018-04-06 16:26:34 +08:00
java oo 的东西顺手起来会觉着爽到
bbzt
2018-04-06 16:30:18 +08:00
@lihongjie0209 #23

请问这么写你不胆战心惊吗: Json.webApp.servlet.servletName
lihongjie0209
2018-04-06 16:32:59 +08:00
@bbzt 我会封装成 Json.getservletName(), 随便怎么改都可以
bbzt
2018-04-06 16:36:58 +08:00
@lihongjie0209 #48

在新版 js 里也可以用 class 方式的写法,抓着十年前 es5 这种老版 js 问题,没意思
kennylam777
2018-04-06 16:41:52 +08:00
拿 23 樓那種超長的例子來說, 如果只是有一天 web-app.servlet.servlet-name 改成了 web-app.servlet.servlet-id

如果有結構封裝, 要改代碼的話, 就把封裝 json 結構的 class 找出來改掉
class servlet{
String servlet-name;
}

直接用 IDE 的 refactor 改成新的 field 名字, 這樣引到用這 field 的地方都會自動改掉, 引用 1 次還是 100 次都沒差
class servlet{
String servlet-id;
}

沒有封裝的話, 如果用 Json["web-app"]["servlet"]["servlet-name"] 的, 嗯, 你們就慢慢手動的 search,再看看是否相關, 然後才 replace......這種 code 你自己用得開心就好, 不要留下來了
lihongjie0209
2018-04-06 16:42:39 +08:00
@bbzt #49 浏览器支持率多少?
bbzt
2018-04-06 16:48:13 +08:00
@lihongjie0209 #51

浏览器端 babel 编译新版 js 代码到 es5 就行。
服务器端 nodejs 都支持的
lihongjie0209
2018-04-06 16:50:49 +08:00
@xiandao7997 #38 主要原因是没有必须迁移的原因, 我没有用过 kotlin, 但是迁移造成的影响是可知的
1. BUG: 新的语言和框架必然有 BUG, 也就是稳定性没有经过时间的考验, 除了问题谁负责解决?
2. 人力成本: 开发者必然需要投入时间学习, 甚至需要经过一两个项目才能完全迁移到新的语言
3. 历史包袱: 已有的基础设施是否可以重用, 不可重用的话也要做迁移, 迁移之后还要测试维护.
4. 开发者个人体验: 对于项目组来说, 不关心.
lihongjie0209
2018-04-06 16:54:19 +08:00
@bbzt #52 既然有 Babel, 那么也要配一个 webpack 吧, 然后 npm 安装上百个依赖, 最后我可以开心的用 class 了
bbzt
2018-04-06 16:57:37 +08:00
@lihongjie0209 #54

然而这些事情,IDE 都自动帮你干了,你只需写代码就行
lihongjie0209
2018-04-06 16:58:49 +08:00
@bbzt #55 那还要 webpack 配置工程师干嘛
orangeade
2018-04-06 17:04:01 +08:00
@kennylam777 #45
@lihongjie0209 #42
这又不是 Java 的专利,json 封装为对象方式那么多

https://stackoverflow.com/questions/6578986/how-to-convert-json-data-into-a-python-object
l30n
2018-04-06 17:05:27 +08:00
Java 刚转前端,累啊
lihongjie0209
2018-04-06 17:08:57 +08:00
@orangeade #57 该个字段名称试试
kennylam777
2018-04-06 17:11:03 +08:00
@orangeade
對我來說, 只要有封裝的都是可行的設計方法, 我還有用 Golang 呢, 近來在練 Kotlin

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

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

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

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

© 2021 V2EX