常年写 JS,怎样适应 Java ?

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

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

8254 次点击
所在节点    程序员
95 条回复
v2dead
2018-04-06 17:12:35 +08:00
是否有封装这种问题的出现不应该取决于对 json 这一类外来数据的处理方式上面,而是来自良好的编码习惯。像这种看起来像是配置类的 json 数据,进行配置的时候必然是带封装的,因为可能要考虑配置变更或者是数据来源的不同,但怎么处理 json 是另外的问题。不是说用 map 处理我就不能做封装了,对待不同的行为的时候做法也是完全不一样的。
比方这个 json 数据来源现在是来自外部消息处理,外部消息是不可靠而且来源多样的,根本无法去做各类预设,而且也不会扩散到其他的业务模块,这时候提前设定结构就是很蠢的设定。数据源怎么解析,和是否封装良好没有直接关系。
qinxi
2018-04-06 17:19:21 +08:00
以前用 java 写后台.现在用 node 要学 ES6 7 ts webpack express
lihongjie0209
2018-04-06 17:25:51 +08:00
@v2dead #61
是否有封装这种问题的出现不应该取决于对 json 这一类外来数据的处理方式上面,而是来自良好的编码习惯。
反驳: 封装就是取决与如何对 Json 建模, 如果用 Map, 那么你就把 Json 的内部结构完全暴露给客户端. 良好的编码习惯就是 information hiding.

数据源怎么解析,和是否封装良好没有直接关系。
反驳: 这点我同意, 数据源的解析应该封装起来, 不被客户端知道, 问题是你解析完成之后你给客户端返回什么? Map? 和不封装没什么区别. 对象? 那么你就要预先定义好接口, 那么就和你说的第二段话矛盾了.
ipwx
2018-04-06 17:26:19 +08:00
@lihongjie0209 我觉得 @v2dead 说的很对。你举的这个例子,这么冗长复杂的配置文件,在别的语言里面是不受待见的。像 Python、JS 处理 JSON 对象,一般只会出现在 API 接口处,然后立刻就处理掉了,没多少机会传播到别的地方的。所以也就没有什么不容易重构的坑了。
lihongjie0209
2018-04-06 17:27:20 +08:00
@qinxi #62 这就是我不喜欢前端的原因, 一个语言社区应该做的事情让每一个开发者都做一遍, 浪费多少时间
ipwx
2018-04-06 17:27:28 +08:00
@lihongjie0209 另外你太小看 IDE 了。Webstorm 完全可以重构代码里面看得到结构的对象( return {a: xxx, b: xxx} 这种),用起来和 Java 定义过的结构没有本质区别。
lihongjie0209
2018-04-06 17:30:01 +08:00
@ipwx #64 首先, 这只是一个从 Json 官网拿下来的例子. 其次, 这种大对象我做的项目中随便都能找到, 应该每个项目都有. 最后你提到的处理那应该是会给调用者返回一个 Map 或者对象, 请问具体是怎么处理的
lihongjie0209
2018-04-06 17:31:30 +08:00
@ipwx #66 动态语言的重构从来都不简单甚至是信不过的, 更不要说涉及到字符串了
kennylam777
2018-04-06 17:31:47 +08:00
@v2dead 如果是外部不確定的來源, 做一個非完整的 sturct 就好, 只為需要的(needed)及已知的(known)的地方寫 fields, 像 jackson 般就是可以把沒定義的 fields 全放在 map 之中, 兩者兼顧到

如果整天接到的 json 都是亂來的, 也就認了
v2dead
2018-04-06 17:38:11 +08:00
可能我们的封装不是一个层次的,就拿配置说事,我的意思是外部请求配置必然有明确的接口,确定的结构。而数据源解析只是这个配置下的一小部分,如果封装就是指对 json 建模这种粗浅的事情了,我问你现在配置来源变成 xml 了呢?变成 properties 了呢?你的建模又如何处理?我个人喜好用 map 去处理原始 json,并不意味着我要暴漏细节给我的用户。
jinsongzhao
2018-04-06 17:58:37 +08:00
@raphaelsoul 由衷的笑了。
jinsongzhao
2018-04-06 18:09:44 +08:00
从 C++到 C#,再 JAVA 和 JS,写久了 JAVA 代码,体会是,代码会越来越精简,预组装越来越多,初始化速度越来越慢,总之猛男也有柔情。JS 则像个软妹子,时不时透出灵动,琢磨不透的美,总还是有读得懂软妹子心的柔情猛男呵!
hareandlion
2018-04-06 18:39:01 +08:00
写 js 不用 ts 吗
liuxin5959
2018-04-06 18:49:09 +08:00
@hareandlion TS 做不到像真正的强类型语言那样的束缚,再说由于架构问题只能用 Java。
night98
2018-04-06 18:59:13 +08:00
json to object 插件了解一下。
SpringMVC 可以自动将 JSON 转 Object,大多数时候不需要手动转啊
ostholz
2018-04-06 19:10:22 +08:00
直接上 Kotlin
mandy0119
2018-04-06 19:10:40 +08:00
记得加分号
wee911
2018-04-06 19:12:33 +08:00
原因是你没理解各种数据结构,json 在 js 里当然很简单,其他任何语言都要用库转
wangxiaoaer
2018-04-06 19:44:31 +08:00
太矫情了,你试没试过 go 这种 xx 一样语言,解析 json 你想死。
fiht
2018-04-06 20:11:25 +08:00
当年在 vim 下写了半年 C,之后写什么语言都觉得这语言太特么的好用了。
由俭入奢易 由奢入俭难

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

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

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

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

© 2021 V2EX