Soft_Job 板


LINE

原Po 研究过 Allman Style , K&R style, GNU style 还有 ISO c99 c++2011 c++2014 c++2022 实际撰写过 Linux kernel, Zephyr, Android framework & App, Python3 for AI Scala for Risc-V, IOS Object-C .m .mm, tracing gcc source, C#, Inline assembly buildroot, bash, Makefile 拜读过大师 Weinberg 的程式心理学 The Psychology of Computer Programming 另有 系统开发思惟 An Introduction to General Systems Thinking 也撰写过完整的 Hungarian notation 语义学 分析 和 它的历史 // 这是有发过文的 int a=1,b=2,c=3; if(a) { a=1; if(b) { b=1; if(c) { c=1; } } } //////////////// int a=1,b=2,c=3; if(!a) { return; } a=1; if(!b) { return; } b=1; if(!c) { return; } c=1; 上下那一段的 coding style 好些? 不管选上或选下 你可以有一百种理由 但当我转换到 asm 时 你就知道原因 push %rbp mov %rsp,%rbp int a=1,b=2,c=3; movl $0x1,-0xc(%rbp) movl $0x2,-0x8(%rbp) movl $0x3,-0x4(%rbp) if(a) cmpl $0x0,-0xc(%rbp) je 0x555555555e7f <teseMe1()+64> a=1; movl $0x1,-0xc(%rbp) if(b) cmpl $0x0,-0x8(%rbp) je 0x555555555e7f <teseMe1()+64> b=1; movl $0x1,-0x8(%rbp) if(c) cmpl $0x0,-0x4(%rbp) je 0x555555555e7f <teseMe1()+64> c=1; movl $0x1,-0x4(%rbp) // push %rbp mov %rsp,%rbp int a=1,b=2,c=3; movl $0x1,-0xc(%rbp) movl $0x2,-0x8(%rbp) movl $0x3,-0x4(%rbp) if(!a) cmpl $0x0,-0xc(%rbp) je 0x555555555ec4 <teseMe2()+66> a=1; movl $0x1,-0xc(%rbp) if(!b) cmpl $0x0,-0x8(%rbp) je 0x555555555ec7 <teseMe2()+69> b=1; movl $0x1,-0x8(%rbp) if(!c) cmpl $0x0,-0x4(%rbp) je 0x555555555eca <teseMe2()+72> c=1; movl $0x1,-0x4(%rbp) jmp 0x555555555ecb <teseMe2()+73> return; nop jmp 0x555555555ecb <teseMe2()+73> return; nop jmp 0x555555555ecb <teseMe2()+73> return; nop 现在你可以看得出来代码的数量....心里也有答案了 这是开放性的解答 ///////// 想要制定coding style的人或主管 必先要学会自省的功夫 1. 自己有尝试过 别人写的style 一天或一周吗? 还是我只是将某个我习惯的style 强加在别人身上 2. 我有试过 新的coding style吗? 3. 我有试过 各种不同的语言吗? 99%的人 在制定coding style的人 没有这3点的自省~~~ 他也没有考虑过 语义学 心理学 在coding style的影响 把时间耗在 定名字 定括号 导到工程师实际上花了三倍的时间 在view code 没有时间去 思惟 整个架构的安全性 速度 cpu & memory 负载量 要打磨的是画作 不是画框 看过python3的人都知 if else. 括号? 我根本不用考虑这东西!!! 制定的 coding style 能使c/c++ 转到 python 的人 在跨语上 更容易读懂吗? 一个好的 coding style 制定者 会自省 使用大脑使用最少的组合 或 拆解次数 做为制定方针 把更多的时间 放在对的地方~~~ 如果说目前最常用的组译器 gcc g++ arm-linux-gcc aarcg64-linux-gcc gdb gdbserver they are all released by GNU 或 经过修改过 https://ftp.gnu.org/gnu/gcc 那使用组译器最易懂的 style 会不会是最好的呢? 答案当然是 不会只有某一种style 是最好的 你可以 考上述原因 融合各种 style 创立最适合 自己团队的!!! 未来的主管们 请多想想 你是怎麽制定 coding style的~~~~ ※ 引述《prag222 (prag)》之铭言: : 大家好 : 小弟上上份工作快离职前 : 听到新进的同事说 : 他都习惯把程式写成一个一个小的function : 後来离职我花了一点时间学习设计模式 : 和了解SOLID原则 : 我越觉得这种作法很OK : 我大概也知道这应该是重复说高手说过的话 : 所以後来找到工作 : 专案自己一个人开发 : 也没主管强制要求程式该怎麽写 : 变照着 之前同事说的话去开发 : 让程式码 程式码也是有结构性架构性的 : 而不是一个function写几百行几千行 : mvc Model层也是切得很乾净 : Model层写的就像api : controller带参数给MODEL层捞资料出来 : 不过我最近的公司 : 完全不是这种做法 : 虽然是MVC不过还是下SQL查出资料 : 看到function写几百行我看了就昏(业务逻辑) : 为了符合公司专案的coding style有点辛苦 : 基本上我速度也差不多折损一半也有了 : 不过尽可能把程式码写成一个一个小单元应该也没错吧 : 毕竟单元测试 : 跟我最近看重构的书也是建议这样 : 上份工作有改到open source的专案 : 好像也是这样 : 是很难看的懂 但扩充维护修改都很轻松 --
QR Code



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.32.93.159 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1679378684.A.DAD.html
1F:→ bmiss: 就我认知除非为了性能,不然不会考虑转成组语的代码量 03/21 14:33
2F:→ leolarrel: 客户:我发案子给你的,要你怎麽写就怎麽写 03/21 14:46
好客户 如果薪水先发 那就更好了~~~ ※ 编辑: fatalfeel2 (114.32.93.159 台湾), 03/21/2023 14:49:53
3F:→ labbat: style 是用来管别人的,自己不用遵守 03/21 15:09
4F:→ labbat: 主管说的 03/21 15:09
5F:推 CaptainH: 你是不是闲得没事干天天想这个 03/21 15:21
6F:→ kiedveian: 反串吗?上下两段只差return,意思是不要写return比较好? 03/21 15:23
7F:推 CaptainH: formatter+linter下去 花脑力在无聊的枝枝节节做什麽 03/21 15:23
8F:→ kiedveian: 转成asm两边的缩排差异就比不出来了 03/21 15:24
9F:→ loadingN: clang format 03/21 16:05
10F:→ fatalfeel2: labbat大 完全命中!!! 03/21 16:17
11F:→ fatalfeel2: 花脑力在无聊的枝枝节节 完全同意~~~ 03/21 16:18
12F:→ fatalfeel2: 这是我进了某间公司 才会研究的东西 因为上头有要求 03/21 16:19
13F:→ fatalfeel2: 好的要求我们可以遵守但不好的要求 就应该改进 03/21 16:19
14F:→ fatalfeel2: 事实上已经有人 因为程式语义学的问题 离职了 03/21 16:20
15F:推 TAKADO: 软体工程师coding最讨厌两件事,一是follow guideline,二 03/21 16:21
16F:→ TAKADO: 是同事不follow guideline 03/21 16:21
17F:推 APTON: 这种事情不都是写好规范,剩下都丢给lint处理就好吗@@? 03/21 16:33
18F:推 s06yji3: 钻牛角尖了 03/21 16:43
19F:推 acgotaku: 这些每个人理解不同,需要有一个架构师出来协调定义 03/21 17:43
20F:→ MoonCode: 天啊 03/21 18:16
21F:→ fatalfeel2: Hungarian notation 某间公司还在用的语义命名 03/21 19:02
22F:→ fatalfeel2: https://reurl.cc/OV5503 在微软发明 被自己宣告放弃 03/21 19:03
23F:→ fatalfeel2: 架构师 就是制定者本人 就是公司规定!!! 03/21 19:04
24F:→ fatalfeel2: 好在我离开了~~~~~~~~~~~~~~~~ 03/21 19:04
25F:→ fatalfeel2: 增加了系统熵 增加了 语言的组合次数 03/21 19:05
26F:→ fatalfeel2: 也禁用 inline Asm 03/21 19:06
27F:→ fatalfeel2: 若大家遇到就看着办吧~~~~ 03/21 19:06
28F:→ enthos: FORTH系asm:dq NUM,1,VARD,0xa,NUM,2,VARD,0xb,NUM,3, 03/21 19:14
29F:→ enthos: dq VARD,0xc,VARA,0xa,FETCH,DOIF,NUM,1,VARA,0xa, 03/21 19:14
30F:→ enthos: dq STORE,VARA,0xb,FETCH,DOIF,NUM 1,VARA,0xb,STORE 03/21 19:14
31F:→ superpandal: 原po写过bash makefile? 感觉是个oop狂人 03/21 20:43
32F:→ superpandal: 人 以bash非常动态的特性习惯来看oop是会觉得 03/21 20:45
33F:→ superpandal: 会觉得很罗唆 03/21 20:47
34F:→ superpandal: 1楼说的是 就是双标 何尝不是权势压力 03/21 20:49
35F:→ superpandal: 3楼 看错 03/21 20:50
36F:推 e12518166339: 不管有什麽想法,我都还是得先问过scripts/checkpat 03/21 23:27
37F:→ e12518166339: ch.pl 03/21 23:27
38F:→ e12518166339: 它老大说ok才算ok 03/21 23:28
39F:推 gary75952: 该思考的是整体架构,你code 之间依赖越低,拆分得越清 03/22 01:19
40F:→ gary75952: 楚,整体code style会变成一种自然,架构设计的越好sen 03/22 01:19
41F:→ gary75952: ior也不会写出什麽烂code,因为有架构的限制 03/22 01:19
42F:推 gary75952: 不用钻牛角尖一些没啥效能差异的code style,很多理论 03/22 01:25
43F:→ gary75952: 大家都清楚,该思考的是当下专案怎做才是最大效益 03/22 01:25
44F:→ fatalfeel2: 赞成G大~ 03/22 02:05
45F:→ xxi511: 你比较喜欢看着一层又一层的if ,可读性管他去死? 03/22 07:58
46F:推 TeaEEE: 我只记得我为了别人一个if else不加{}的bug,追了一天 03/22 09:02
47F:推 wilson6405: 第一次看到程式心理学 03/22 09:36
48F:→ yamagishi: 阅读性定期 03/22 09:53
49F:推 KanzakiHAria: TAKADO那句最讨厌两件事好好笑XDDDDDDD 03/22 12:24
50F:→ Lipraxde: Asm 嘛...优化、PGO、UNLIKELY 下下去都好解决的,不该 03/23 21:18
51F:→ Lipraxde: 拿来当决定 coding style 的理由 03/23 21:18
52F:→ ku72: 在现在的硬体效能下 努力增加程式码的容易理解程度 比增加效 03/24 11:43
53F:→ ku72: 能来的重要多了 03/24 11:43
54F:推 zero11995: 15F XDD 03/24 14:38
55F:推 bjk: 15F XDD 03/24 16:56
56F:推 laxw: follow公司rule就好, 都看的懂 03/29 15:22
57F:→ MonyemLi: 有大厂定义,ide抓来汇入就好。如果这语言没有,看是否 04/06 07:18
58F:→ MonyemLi: 有必要为了效能牺牲可读性。早期java常见c的sytle,但 04/06 07:18
59F:→ MonyemLi: 为了什麽?效能?怎麽可能 04/06 07:18







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP