我们学最新的技术和概念,写优雅的代码和注释是为了什么?

2021-05-07 09:14:17 +08:00
 kensoz
我们花时间学最新的库,最新的特性,写的时候代码优雅注释清晰,这是为了什么?

写几个无脑的 for 循环,无脑的 if 判断就可以搞定上线,让老板赚钱。因为无论你用什么东西写最后的目的就是能用能上线就行,你写的再 nb 再高端,也不会升职加薪,老板也不懂,甚至因为看不懂你的奇淫巧计而批评你。

而且有时学习新东西用新写法还会耽误自己的时间,自己的的 nb 代码,仅仅在写完的时候让自己爽了,其他人都不在乎,只在乎能用就行,其他的意义还有什么嘛。为了面试吗?如果下一家公司还是这样不就陷入了循环之中嘛。
5376 次点击
所在节点    程序员
61 条回复
wu67
2021-05-07 17:28:28 +08:00
技术和概念姑且不谈, 优雅和注释是必要的. 就算是我自己写的代码, 过一两个星期不读, 也会忘记啥是啥. 注释非常有必要.
chaleaoch
2021-05-07 17:35:42 +08:00
如果是一个三个月的小项目,其实真无所谓.
但是我目前正在参与一个 本来以为是三个月的,但是实际上已经开发了将近三年并且一直加功能,不知道什么时候结束的大项目.
代码已经面目全非了,如果当初好好设计的话,....

所以楼主 意义就在于此.
cereschen
2021-05-07 17:42:56 +08:00
面试人家要看你的开源项目 然后你给了一个这样的能用就行的项目
直接 game over 好嘛
tairan2006
2021-05-07 17:48:22 +08:00
别给自己挖坑
shiweifu
2021-05-07 17:51:04 +08:00
当然是为了 W
OceanSea
2021-05-07 18:32:17 +08:00
为了以后方便维护
ukuyu
2021-05-07 18:35:52 +08:00
为了提高重用性呗,交接方便
iceheart
2021-05-07 19:35:57 +08:00
主要是给自己看,代码写久了,记性会变差。
karloku
2021-05-07 19:55:47 +08:00
人有审美需求
有时候比较苦比较忙比较累, 没有足够的余力去满足审美追求. 但是回头有空的时候再看看, 不满足审美的东西看着就让自己生气
Suddoo
2021-05-07 20:16:59 +08:00
@hxndg
- Go 没有三目运算符,那你代码还写不写了?
- 复杂的嵌套逻辑,用三目运算符的可读性比 if else 更差吧,基本上没人能看懂了
- 不支持函数式编程的语言你咋办,还不能写 for 循环了?
- 整天搞这些语法糖,黑科技,意义真的不大啊
hxndg
2021-05-07 21:06:36 +08:00
@Suddoo

所以为了杠而杠呗,语言有限制的时候肯定会使用别的东西,具体的环境肯定是具体分析,代码可读性和优雅就不能兼得呗?

做系统 /kernel 乃至自动机的时候我们各种黑科技语法糖、位运算,三元运算符,零长度数组我们都用,

如果你觉得所谓的 ifelse 什么的或者用三元运算符都随意的话,你大可看看 OPENSSL 和 OPENSSH 这种中型软件,我们打 PATCH 的时候折腾里面的代码都要吐了,很多时候语法糖,黑科技和逻辑优化要么就是简化代码行数,要么就是提高代码可读性
searene
2021-05-07 21:21:38 +08:00
我不同意楼上所说的取悦自己的想法。写好的代码最终还是为了自己,不是别人。一堆 if else 的后期维护成本极高,在 if else 的基础上做新需求所花的时间也会很长,谁来维护?谁来做新需求?那还不是自己。如果不管任何架构只往上堆 if else 的话,相信不出 3 个月你就没法再堆下去了,再不重构的话只能自己每天加班在这坨屎山上滚来滚去,这无疑是浪费时间且毫无意义的。
xuanbg
2021-05-07 23:26:25 +08:00
为了自己内心坚守的一片净土。为什么非得坚守本心不妥协呢?明明乱来也不影响结果。因为能坚守本心的人,才走得远。
Suddoo
2021-05-07 23:29:07 +08:00
@hxndg
抱歉,真没心思跟你杠,我写个 if else 非要让我改成三目表达式,这种为了炫技而炫技,真的很没意思,if else 不能跑还是咋滴?
你也可以看看 Spring 的源码也是一堆 if else,并不影响其流行程度
还有,你说的那些黑科技,大多数并不是为了提高可读性,反而更多的是为了提高性能,牺牲可读性
Leetcode 里 一堆 one line solution,可读性极差,代码风格非常“优雅”,但是,一般人都看不懂
freakxx
2021-05-08 01:35:05 +08:00
@hxndg #51
@Suddoo #54

感觉谈的是同个方向两个角度的事情,

Suddoo 在#33 表明的是吹毛求疵的问题,或者说,某种程度上,用某些语法糖反而会产生更“拗口”的代码;
hxndg 在#37 表明的是,不同的用法,虽然看起来结果是一样,但实际上会产生后续迭代的问题;

这个点上,我是赞同双方的,对于 hxndg 说的,我觉得是更有趣的一个观点,很多时候,写代码的时候,就算同一个用法,后面你再去做的时候,会发现就是少了那么一点预见性。

后面楼层就感觉不是同一码事了。

但就代码而言,合适的地方做合适的事,这个还是对的。
三目也好,lambda 也好,one line 也好,用得好就是化腐朽,用得不好确实挺臭的。

但像楼层这样没有例子,直接批评语法来说,我还是觉得不是特别妥当。

像 unpacking 这种,能够一行搞定的事,肯定是又优雅,可读性也好(在特定语言中);
有时简单的判断,三目一笔带过,肯定比去写个 if...else... 漂亮;
这跟提高性能,牺牲可读性,感觉还是两码事。

反之,本来就复杂的代码,还要夹杂在各种 if...else...做单层处理,一拉就是几十行,那还是挺丑的。
dayeye2006199
2021-05-08 03:52:06 +08:00
为啥大家觉得工程质量和钱没啥关系呢,写好写坏都一样拿钱呢?
在一个比较正规的公司,你写的代码质量不达标,就过不去 code review 和 ci 这关,会影响你的代码合并入产品的速度,影响你的绩效。

你对代码质量和好的工程实践没有概念,如果你做工程经理,你的团队的效率就会差,迭代的速度大幅减慢,欠一屁股的技术债直到代码无法维护。那公司怎么放心给你升职做经理呢?


除了平时的工作,你也没法参与开源社区,不懂如何给社区贡献一些高质量代码,那怎么学习和提高自己的水平呢?

工作大部分时候都是个团队协作的过程,保持代码质量,方便自己,也方便别人,提升团队的工作效率何乐而不为
Nicolas4
2021-05-08 09:10:18 +08:00
@zifangsky 几千行...
UIXX
2021-05-08 10:02:11 +08:00
很有意思的问题,我想不只是工程师,各行各业的人对于这类问题的答案应该是一致的:提升自身的竞争力并收获自尊(或者说自信)。

首先我们应该反过来想,什么样的工程师才会不在意软件工程中各种所谓的规范,不去学习新的更先进的技术与概念?

1 、低职业自尊的人。
“我就是这样写,怎么着,反正能正常跑。”
“你觉得不行那你来改吧。”
“反正我写代码就是混口饭吃。”

2 、自身的竞争力已经不在技术实现上。跟 1 有部分重叠。
“这个你研究一下吧,我待会还有个 xx 会议要开。”
“这次竞争上岗我十拿九稳,xx 是我的 xx 。”
“老哥,那么卖力干嘛,我拍一次视频顶你半年的工资。”

回到正题。社会上所有生产者的职业道德,大概都是维护本行业的社会地位(门槛)以及独立个体的竞争力。“学习新技术”及“更好的代码习惯”都是程序员群体内非常符合这一点的具体实践。如果没有这些“品质”,对于码农的社会眼光就会降低,职业待遇也会相应地变化...应该说这些行为包含一种群体的自觉。

进一步,行业内个体竞争强调了这些“品质”。这点毋庸赘述。

竞争的内源是生存恐惧。在资源一定的情况下,个体根本不存在“够用就好”。
写几个 if 就可以糊弄的老板过几天就招了个代码写得又快又好的实习生替代你,你要不要多学点东西?
如果全世界包括你只有一百个人会某种技术,哪还有这么多屁事,只因你的“生存空间”太大了。
LemonK
2021-05-08 16:29:17 +08:00
这个问题可以类比个人笔记。我上学的时候笔记只用各种符号关键词箭头只有自己能看懂的自造语法,反正应付考试够用,也没觉得有什么问题。
工作之后一开始笔记也是没头没尾乱写,后边过了几年再看完全看不懂了。之后就开始慢慢认真写,各种笔记方法论也用上了,再复习就很舒服,发博客或技术分享也可以直接拿来用。
代码归根结底也是给人读的,写文章为什么要写好,写代码也是一样道理。只会造屎早晚会吃到自己造的屎,可以不用每次都写好,但起码要有能写好的能力,毕竟选了这行就要整天面对这些东西,降低一点未来吃屎的概率不是很有意义吗。
chogath
2021-05-08 16:37:12 +08:00
勿以善小而不为,勿以恶小而为之

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

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

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

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

© 2021 V2EX