V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  CLMan  ›  全部回复第 5 页 / 共 8 页
回复总数  146
1  2  3  4  5  6  7  8  
335 天前
回复了 tlerbao 创建的主题 程序员 到底要不要统一管理 API
WEB API 本来就天然适合封装(模块化):

- WEB 请求存在大量与应用本身无关的细节,这些细节不应该与业务逻辑混合在一起
- 需要多个地方调用相同的 WEB 请求
- 多个 WEB 请求需要复用处理鉴权、错误处理( HTTP 状态、自定义错误代码)的逻辑

将 API 理解成远程调用的话,就更能理解为啥要封装了。

将访问外部 API 接口进行统一管理是一个很自然的想法,你疑惑为啥要这么做,可能是因为你接触的问题复杂度不够或者你习惯了麻烦。

云服务厂商在提供服务时,在提供 WEB API 的同时,同时提供封装的 SDK 也是差不多的道理。是因为用户存在相关需求,用 SDK 能降低开发成本。
如果是指 RTS ,暴雪用星际 2 证明了 RTS 这类硬核游戏已经不适合当前的游戏消费人群,后续也没什么游戏厂商原意在这方向投资。

如果是指 RPG ,war3 的一些 RPG 已经孵化出了独立的游戏类别:

- DOTA ,影响了后续的 DOTA2,LOL,王者荣耀
- 战三国,影响了后续的 DOTA 自走棋,云顶之弈

RPG 的 war3 虽然经典,但已经是“百足之虫,至死不僵”,这么多年来已经有更好的平替游戏以及其它游戏了。

此外,现在的 RPG 的 war3 ,不考虑外部竞争,存在两个致命缺点:

- 游戏本体因为引擎的限制,在怪物数量较多时以及第三方 hacker patch 的滥用下,性能很差,没法做到向低端硬件兼容(优秀的例子是拳头游戏)
- 在网易的官方平台主导下,所有 RPG 地图全向金钱看齐,沦为了国产页游级别的充钱加属性的流水线产品

这两个致命缺点,加速了 RPG 的 war3 的游戏寿命衰减,旧玩家脱坑,也没有什么新玩家。
338 天前
回复了 guotie 创建的主题 软件 为什么我没觉得 obsidian 有多好?
如果你只是把它当成一个 Markdown 文件管理器的话,目前没有比这更好的软件了。

在用 Obsidian 之前,我是用 VSCode 来编辑我的笔记,vscode 没法实现 `编辑即预览` 效果。

Obsidian 可以平替 VSCode ,除了默认的图片路径是私有格式需要修改为 Markdown ,其它都是开箱即用。除了 Markdown ,我没用它任何私有功能,以及第三方插件。

我是用 Git ,每个笔记本我只需要备份.obsidian/app.json ,.obsidian 下的其它配置写入.gitignore 里面。
339 天前
回复了 weidaizi 创建的主题 分享创造 个人数据冷备方案及配套小工具
之前也计划过用 Go 写类似的软件,用来避免电脑里面保存的 exe 啥的被篡改(没装杀毒软件,有点疑心病),这下可以借鉴下楼主的思路。
341 天前
回复了 nnegier 创建的主题 Java Java 有讲锁比较深入浅出的书吗?
XXX 语言 YYY 知识,其实就是 YYY 领域知识,而只不过 XXX 语言自己封装了一套。没有基础的或者基础不牢的新人,就很容易陷入 XXX 语言提供的封装的 API 里面,去死记硬背文档、API 说明、实现代码,缺乏跳出该语言去学习 YYY 领域知识的视野。

如果你只是要弄清楚基本概念,那就从操作系统层面入手,比如《操作系统导论》相关章节。再往下深挖就是 ISA ,硬件原理(我自我认知没这知识背景,没研究这东西)。
纯函数式语言工程界都没怎么用,工程语言也就吸收点函数式语法糖,和正宗的函数式语言差远了,学生时代可以学,面向工作时代就没必要了。

JVM 上的其它语言(主动)学习的价值其实都不大,因为它们就是用来替代 Java 的,用的框架、编译结果都没啥区别。招 Java 写后端的公司也不可能让你进去写 Kotin (你跑路了怎么维护)。例外情况是,安卓开发需要学习 Kotin ,用 Spark 需要学习 Scala 。
351 天前
回复了 dc2002007 创建的主题 React react ui 组件库选择
写 Windows 桌面应用(electron,tauri,wails)可以用微软官方的 fluent ui:

https://github.com/microsoft/fluentui
1. strictNullChecks 肯定得开启吧,开启后 TS 就是 null safe 的语言了
2. 我是去年才学得 TS ,`declare`是不是属于被边缘化的语法,我在 handbook 中没学过,自己项目也从未使用
3. 类型允许 null 就应该增加检测 null 的代码,除非是逻辑需要,不应该用断言`!.`
4. 除开与外界的交互,项目中应该只使用 null 或者 undefined 一种来表示空(google style guide)
352 天前
回复了 purenothingform 创建的主题 Android WebView 竟然貌似不支持 js async 函数?
@CLMan 更正,“promise 不应该在 aysnc 函数里面使用”是错误的,应该是 async 函数不需要手动返回 promise 。

看了下 4 楼代码,确实学到了许多,特别是 promise 和 async 函数之间的关系。很多场合,async 函数还是没法替代 promise ,需要手撸 promise 。
352 天前
回复了 purenothingform 创建的主题 Android WebView 竟然貌似不支持 js async 函数?
@CLMan 看了下,4 楼的代码写的比我好。
352 天前
回复了 purenothingform 创建的主题 Android WebView 竟然貌似不支持 js async 函数?
promise 是 es6 加的底层 API ,async 是 es8 加的语法糖。

promise 不应该在 aysnc 函数里面使用,async 返回值会自动包装为 Promise 。

promise 的问题是不够直观,写起来心智负担较大,能用 async 和 await 就尽量别用 promise 。

```
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

async function waitUntilPresent(w, callback) {
while (w.main === undefined) {
console.log("sleep");
await sleep(100);
}
callback(w.main);
}

setTimeout(()=>{
window.main = "hello";
},1000);

await waitUntilPresent(window, main => {
console.log(main);
});
```
2023-06-08 12:19:40 +08:00
回复了 yuanyuandeqiu 创建的主题 Java Java 优先队列问题
@boatrain1111 我作为一个过来者,认为他犯了初学者的毛病,指出来有什么问题?除此之外,我揣测了他什么?
个人是缺乏了解一些最佳实践,因此只能用最基本的功能。
2023-06-07 21:56:44 +08:00
回复了 hj960511 创建的主题 程序员 银行类的研发工作岗位在哪里才可以找到,比如农业银行?
1. 名校硕士校招
2. 大厂出身社招
3. 外包跳甲方,难而且收入不如 1,2
2023-06-07 21:35:32 +08:00
回复了 yuanyuandeqiu 创建的主题 Java Java 优先队列问题
@CLMan 更正“不补充该领域的专业知识”,应该为“补充该领域的专业知识”
更正“看看其它语言是如何封装也是一个不错的思路”,应该为“了解其它语言是如何封装也很有帮助”
2023-06-07 21:33:19 +08:00
回复了 yuanyuandeqiu 创建的主题 Java Java 优先队列问题
作为一个过来人,你犯了自学的通病:缺乏背景知识,然后钻牛角尖,后果是浪费大量时间成为了“计算机民科”。

一个学过数据结构与算法的人,除非他看了 PriorityQueue.toString()的文档说明,他根本不会调用`System.out.println(q1);`,因为在数据结构与算法里,堆实现的优先队列,其打印结果是未定义的。

很多喜欢吊"Java 源码袋子"的人也是这样,明明不懂,偏要分析来分析去搞得自己很懂的样子,就比如`java.util.concurrent`包,我敢说 99%的 Java 开发者都没看源码的必要。

正确的思路是跳出 Java 提供给你的封装,不补充该领域的专业知识,你这里就是“数据结构与算法”课程,再回头到具体的语言,看看其它语言是如何封装也是一个不错的思路。别一点领域知识都没有就去钻文档,钻源码,这样学习效率很低下,而且思维被 Java 的封装给局限了。
2023-06-07 12:16:28 +08:00
回复了 ben548 创建的主题 Go 编程语言 一个初始化 slice 的问题
如果能预估最大容量,就是第 3 种写法。

go 的 slice 和 java 的 ArrayList 差不多,就是我们在数据结构与算法里面学到的基于数组实现的列表,基本的扩容策略是双倍扩容:每次 cap*2 ,摊还每次插入 O(1)。

所以第三种写法是在使用数组实现的列表时的常识,与具体语言无关。
按照编程的常识来:大多数语言都是放在文件的头部。

违背编程常识的 feature 发明,通常不是陷阱就是鸡肋,尽量避免使用。
1  2  3  4  5  6  7  8  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3042 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 59ms · UTC 14:00 · PVG 22:00 · LAX 06:00 · JFK 09:00
Developed with CodeLauncher
♥ Do have faith in what you're doing.