还有比 winapi 更丑的 api 吗?

2019-03-25 09:36:53 +08:00
 zycpp
迫生,在 Windows 上做 c 艹开发,被 winapi 折磨的死去活来,好奇还有比这更烂更丑的 API 吗?
开发语言不限…
想开个眼界
8305 次点击
所在节点    程序员
57 条回复
geelaw
2019-03-25 14:42:30 +08:00
@zycpp #24 我觉得惟一可以吐槽的是类型名是全大写,以及使用匈牙利命名法。然而实际上参数名并不是 signature 的一部分。

@kristpan #40 system 和 CreateProcess 完全不同,更接近 ShellExecute 才对。而且“表达一个概念具有固有的复杂度”,因为 Win32/NT 上的一个进程需要这些信息,所以必须要提供。当然你可以 argue 应该提供一个简化版本的 CreateProcess 然后提供 CreateProcessEx。
kristpan
2019-03-25 15:01:28 +08:00
@geelaw 当然,system 和 CreateProcess 不同。我摆出来主要是因为别人提到了 fork+execve,一般把 fork 和 execve 一起用和 system 的效果类似。
wweir
2019-03-25 15:18:46 +08:00
按照小伙伴的说法,阿里的 API 是最难用的,准确说是丁丁的 API
ourleven
2019-03-25 15:26:25 +08:00
怎么说呢,代码质量还是可以的。(就是丑而已)

工程师,不要那么在意 ^0^
ysc3839
2019-03-25 15:50:03 +08:00
@kristpan @geelaw 曾经有个更简单的 WinExec,不过被弃用了。
IMCKH
2019-03-25 17:17:07 +08:00
eclipse 的 swt
dosmlp
2019-03-25 18:24:32 +08:00
为了兼容性,毕竟祖传的接口不能随便改
tomychen
2019-03-25 18:42:01 +08:00
@GeruzoniAnsasu
win 的
CreateProcess
CreateProcessEx
ShellExecute
ShellExecuteEx
WinExec

也不少了吧
nickr
2019-03-25 22:27:46 +08:00
win32 时代的 -W, -A 太傻了. 比如 CreateWindowW(), CreateWindowA()
xieyudi
2019-03-25 23:15:10 +08:00
@tcjj3 不过汇编 /机器码也是种接口,和 win32api 类似。
只不过这里所说的 win32api 是应用程序 /操作系统之间的接口,汇编 /机器码是软件程序 /RTL 的接口。
ddup
2019-03-25 23:32:09 +08:00
你写写 OBJC 就知道什么是饭猿类了
geelaw
2019-03-26 03:57:56 +08:00
@tomychen #48 认为 ShellExecute 是启动进程是一个常见错误。ShellExecute = 在文件资源管理器里选择文件的上下文菜单操作,很多操作是没有“启动进程”这种说法的。
ericgui
2019-03-26 07:46:16 +08:00
我同事写的
weyou
2019-03-26 09:53:25 +08:00
习惯问题,等你搞过 1 年 winapi 开发,你会发现其他的 api 都是渣渣。
lizhuoli
2019-03-26 10:27:04 +08:00
匈牙利命名法真实奇葩……好好地 IDE 提示不用,给参数名加类型前缀……
tomychen
2019-03-26 13:36:01 +08:00
@geelaw 哈,这就较真了...娱乐嘛,很多操作没有“启动进程”的行为,不代表这个功能不能用来启动进程嘛。就像 fork()除了能启动进程以外,还可以让进程变为守护进程一样。

就事论事的态度而言,虽然很多猿都反感 MS,但可能更多人反感的是 MFC 吧,反感 winapi,楼上也有人提到了 API 里的
CreateFileA(W)/CreateFileEx... 更多时候在我看来也是为了让开发者减少去适应一些新的 API,以及在各个大小版本上的兼容问题。

反观某些平台,完全无视开发者,API 说弃用就弃用,是的,直接从底层摘掉,也就是上个版本还用得好好的程序,更新一下主系统,程序就启动不起来了。当然,这问题跟朋友讨论过,有说好,也有说不好。至于好还是不好呢,其实我也不知道。可能对系统厂商而言,减少了很多开销,但对开发者和用户而言其实是不太友好的。

至于 win(32)API 再加上 MS 那套针对自己无比友好的 MSDN 而言,如果说它还不够好,我真不知道谁家的算好了.
anyele
2019-03-27 10:32:25 +08:00
@nickr #48 祖传的接口不能随便改

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

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

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

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

© 2021 V2EX