关于 Java 很重有感

2022-05-10 11:20:45 +08:00
 Bingchunmoli
  1. 感觉很多人对 java 还停留在 j2ee 时代,不过 java 还在 jdk 还在 1.8 ,就不需要谈了。
  2. 今天写前端突然发现前端的路径也是他们俗称的臭长,明明一个 model/LoginInfo.ts 就能创建为 api/interface/LoginInfo/index.ts 特别是 index.js index.ts 都是创建文件单一个 index 明明如果不是多个就叫 router.ts 就好了嘛,不知道有什么特殊的吗。
  3. 我觉得有一句话我挺认同的,路径长,一个是便于管理(很多写路径规范吧,或者跟着教程学的就是这样),一个是和语言无关,和写代码的人有关。毕竟还有的人接口前面带 I 有的人不带的。没有对错之分。
15035 次点击
所在节点    程序员
142 条回复
levon
2022-05-10 22:32:44 +08:00
@codingadog 严重同意
gjquoiai
2022-05-10 22:33:42 +08:00
没写过 java ,java 不支持 import alias 吗?就像 python 的 import xxx as yyy 和 golang 的 yyy "github.com/xxx/xxx" 一样?
RedBeanIce
2022-05-10 23:21:36 +08:00
写大量业务代码不分 pkg 包,重构 or 迁移的时候就知道痛苦了。
正如网上嘲讽本科学历 5%一样,我也嘲讽一下,真的有人写业务代码嘛
Bingchunmoli
2022-05-11 00:04:47 +08:00
@byte10 我们项目是强制三秒超时的。。qaq
Bingchunmoli
2022-05-11 00:12:39 +08:00
@mekingname 说的是这个理,一般正常点项目 service 都是几十个,感觉还想分一下,vue 的 router 和 store 没见过几个文件的都是 index.ts 或者 js 感觉额外增加了文件夹
rykinia
2022-05-11 00:38:25 +08:00
@mekingname 你骑自行车去 200 米外的菜市场买菜,一脚蹬穿插两下就到了,架子一放就停了;你开汽车去 200 米外的菜市场买菜,还要严格遵守交通规则走机动车道绕路,找停车位停车。这时你说骑车轻松,开车累,是没问题的。

但是你从浙江去广州,那就不一样了,前面场景中操作汽车麻烦的点,在这个场景显得无足轻重,同时,规则带来的好处也大于了麻烦。
lawler
2022-05-11 00:52:28 +08:00
编程语言拉踩赶上月经了。

所谓的 Java"很重",是指 runtime ,因为需要预分配大量计算机资源。

至于文件夹 /路径和文件命名问题。在"功能"开发上是没有意义的,这类多为脚本类型语言,单一、且避免扩展。在"业务"开发的意义是为了有计划的实现扩展。与"重"无关。
micean
2022-05-11 01:12:40 +08:00
有的人能把屋子收拾的整整齐齐,有的人家里跟遭了贼似的
都能住人么不是
Buges
2022-05-11 02:20:09 +08:00
@Joker123456789 类全名规范完全是过度设计,真没什么好洗的。一层命名空间能解决的问题搞出一大堆,尤其是一堆堆只有一个子项的目录嵌套 src/main/java/com/example/Xxx.java 这不是多此一举么。我只在乎我用的 StringUtils 是项目中导入的哪个库里的,而不想关心它 com.tencent 还是 org.apache 家的。
echo1937
2022-05-11 08:43:35 +08:00
有些人就是蛋疼,只要某个领域出现若干占主导地位的一站式框架,就会有约定大于配置,就会有一堆脚手架。

我以前写 JQ 一把梭,现在不到 5 个页面的项目也要起个 Vue 、React 项目,是不是表示 JS 也“很重”?

这不是叫工程化吗,和语言重不重有毛关系啊。
hhjswf
2022-05-11 09:22:54 +08:00
@mekingname 可是项目工程化,我怎么知道未来到底几个文件,不为未来预留一点空间吗。就像设计模式原则一样,对修改关闭,对拓展开放
wxw752
2022-05-11 09:30:16 +08:00
你们吵到我搬砖了[doge]
securityCoding
2022-05-11 10:17:58 +08:00
@Suddoo 协程出来后提升也有限,应用层面无非是资源占用少些,但是有多少应用会开成千上万个线程呢,毕竟 java 有个线程池大杀器在那里,go 协程作为其标志性代表鹅厂内部 go 类型 rpc 服务也同样采用了协程池。
BQsummer
2022-05-11 10:19:59 +08:00
TencentStringUtil 是真的蠢, 那不是所有类都叫 TencentXXXX 了
vincent7245
2022-05-11 10:28:36 +08:00
真的是日经贴啊,就静静地看你们吵架
mekingname
2022-05-11 10:30:35 +08:00
@hhjswf
编程语言这么多,难道其它语言的程序员都不懂工程化?其它语言的程序员都不懂得为未来预留空间?其它语言的程序员就能预测未来有多少个文件了?其它语言的程序员就不懂得设计模式的开闭原则?为什么只有 Java 嵌套这么深,其它语言都没有这个问题?
mekingname
2022-05-11 10:41:33 +08:00
@BQsummer 创建一个 tencent 文件夹,然后把相关的 StringUtil.java , XXX.java 直接放到这个 tencent 文件夹里面就可以了。总共只需要 1 个文件夹。
mekingname
2022-05-11 10:45:37 +08:00
@rykinia 你说的没错,前提是规模要足够大。但我从 Github 上面,随便搜索任何关键词,C++项目 50w 行代码,嵌套的文件夹不超过 10 层;而 Java 大多数项目,代码行数不超过 1000 ,但是嵌套了几十层。给人的感觉就是,Java 程序员连下楼扔个垃圾都要开车。
zhennann
2022-05-11 11:19:46 +08:00
Java 命名冗长是事实,不利于源码阅读。一个开源项目代码行数本不多,就是因为嵌套层级深,想快速扫一遍源码很不方便。如果要实现命名的唯一性,可以考虑 CabloyJS 框架中模块名称的命名规范:{providerId}-{moduleName}。providerId 可以是项目名称、可以是公司名称,虽然从理论上无法 100%避免冲突,但是通过工程实践上的约定是可以做到的,这就体现了一种克制、平衡的策略,而不是像 Java 那样一个域名撸到底
jy02201949
2022-05-11 11:54:29 +08:00
@wxw752 头像跟评论很搭

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

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

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

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

© 2021 V2EX