把代码写得简单易懂到底好不好?

2014-11-25 10:58:39 +08:00
 nomemo
最近我喜欢把那些逻辑复杂的大块难懂的代码不再称作垃圾,倒喜欢叫做方法原型或者脑中原始方法的直接映射。也正是因为这样,开始整理那些方法原型,进行拆分与细化。复杂逻辑写得越来越简单易懂。

虽然同事也会说代码漂亮,但就越来越感觉自己容易被人取代

正好,上周有个同事因为家里有事回家一周,他手上的工作就完全停止,因为他大量的代码与功能实现都还是代码原型。

我上周工作了七天,昨天休息了一天,结果别人拿着我的代码就能改。

略微有些想法,跟V友分享一下
16386 次点击
所在节点    程序员
122 条回复
nooper
2014-11-25 21:55:23 +08:00
推荐一本书, clean code.
nooper
2014-11-25 21:56:01 +08:00
@michaelye1988 中国的公司只是注重技术,并不懂技术。
TingHaiJamiE
2014-11-25 22:32:01 +08:00
我到公司的第一个工作就是接手同事写完的系统,开发后续功能。
同事写的比较清楚,无论是修改还是扩充都很方便,现在同事调去做更有意思的产品了。
不太理解,既然自己做得好,为什么会被淘汰和取代?
loading
2014-11-25 22:35:34 +08:00
别傻了,你的代码写得不易懂,必须马上把你炒了。
编程是个体力活,大不了找人重新写,流程什么的公司都有了,就当是重构!
代码难懂就说明你能力差,必须炒掉。

例如:twitter谁不轻松写出来,在跑的代码,价值不是代码本身,而是里面的流程,在用户的角度看到的一切,腾讯抄袭是不需要代码的,只要知道表现形式和流程就行。


你自己问下自己,你写个其他的项目,不就是个提力活吗?比你牛的多得很强,大不了重新写。



故意写得难懂,是在说‘我没心思干了,代码能跑就行了!’,谁知道你是绞尽脑汁故意写的还是这就是没优化的代码!
Dzinlife
2014-11-25 23:04:41 +08:00
代码是给人看的。
有这种想法,说明你没有核心竞争力。
wilsonxyz
2014-11-25 23:15:20 +08:00
这是作为高级程序员最基本的事。
ant_sz
2014-11-25 23:15:40 +08:00
把代码写的清楚应该比写的复杂更困难吧。。。
sgissb1
2014-11-25 23:36:32 +08:00
好的领导,远离不可替代的人,亲近可替代的人。
好的码农,写人类能看懂的代码。不好的码农,写除了他以外,或者两他自己都看不懂的代码。

而现实是,绝大多数领导都是不好的,原因是当他们还在基层或码农时代时;他们并不是好的码农,而正因为做了不好的码农就不知道他该需要什么样的人了。

现实中,绝大多数码农都是不好的。并不是他们水平如何,更多处于“心态”,毕竟“护食”都是人的本性,同时也有部分码农是由于工作压力使得没有精力去顾这么多的问题。


目前我就说会所我自己的经历,我觉得我所遇到差的码农,比较多的还是“护食”和“压力”、少部分是真的由于水平差引起的。
把代码写好,我觉得关键是有个度。60分还是80分?前往不要想着做100分,因为你做到100分的时候,你也可以滚了。滚的理由很复杂。
nomemo
2014-11-26 00:14:28 +08:00
@sgissb1 你的答案很细致也很符合我和想法,感谢一下

@loading 也不是每个公司都这样,这个问题也不是针对某一个情况而说,而是对目前的一个现状的感慨
min
2014-11-26 01:39:19 +08:00
人应该有追求
为了看不见摸不着的安全感,天天在烂代码里面打滚是一种追求
写得简洁漂亮易于维护和扩展又是另外一种追求

至于故意写得烂,从老板的角度,除非技术水平渣渣,不然这点小心思还会看不出来?
lzdhlsc
2014-11-26 05:28:10 +08:00
你们都不code review的吗?
winnie2012
2014-11-26 08:26:28 +08:00
有点本末倒置:
劣币驱逐优币,说明环境不行,该换环境了。
稳定饭碗而混,那你也变劣币,该换头脑了。
Loop680
2014-11-26 08:38:33 +08:00
@tini8 开源怎么说?
jianghu52
2014-11-26 08:42:00 +08:00
我觉得有时候敲代码就像做菜
如果你只是要保证能吃,那么把做菜精准的分成几十步,每一步都有精准的标准,比如多长的菜切多少刀,油下锅多少秒放菜这样的,那么可能真的,教会徒弟饿死师傅。这是必然的。一来是因为徒弟比师傅便宜,二来,这个餐馆买能吃的菜就会赚钱,不会卖那种珍馐美味。三来,师傅已经不会其他的了。
可是你要是把做菜当成艺术,每一次做菜都是一种对食物的升华,每一刀都是为了最完美的体现食物的线条,火候的掌握是为了切合食物的本性,调味是为了更好呈现食物的味道。这个时候,你每一次重复,都是一次升华,一次进步。这个时候,你还会觉得教会徒弟,饿死师傅?
tini8
2014-11-26 08:43:12 +08:00
@Loop680 开源开发者混的很惨
Loop680
2014-11-26 09:00:43 +08:00
突然想到了一个类比,写代码/程序开发与做硬件/工业设计
sony,任地狱,乃至苹果等各大手机厂商,做硬件产品的时候无一不是将确定的设计方案拆开了分成若干年来升级发布,什么PSP/PSP1000/PSP2000/PSP3000/PSP GO/PSV,什么GB/GBC/GBP/GBA/GBASP/GBM/NDS/NDSL/NDSLL/3DS/NEW3DS,还有现在的Iphone12345678s。
为什么这么专业的公司,不一次性把产品做到极致?为什么开这么多产品线和更新线?
他们的职业道德哪儿去了?
大家都是为了利益,为了赚钱,为啥这些公司就可以不要更新圈钱,程序猿就要毕其功于一役?
不太懂,请指教。
mengzhuo
2014-11-26 09:19:11 +08:00
@Loop680

类比不正确,硬件的限制更加多,

比如苹果想上蓝宝石,工艺决定了上不了,换家工厂试试?
比如特斯拉想做好电池,不好意思,锂的物理特性决定了现在的能量几乎是极限了,换种元素试试?

相比之下,软件改起来容易多了

程序员就应该能在实战中提升自己,赚点技能点,运气好、开窍了可以点开技能树。
技能树够高了,人品也没啥问题,难道还怕找不到好工作?

我真替那些写垃圾代码、替写垃圾代码辩护的人感到悲哀。

最后放Linus大神的话:
Talk is cheap, show me the code.
Loop680
2014-11-26 09:29:27 +08:00
@mengzhuo 我知道工艺问题是随着其他制约条件而逐步进化的,但是我想说的是,我曾经看过的很多新品发布拆机测评报告,比如PSP或者NDS这种游戏掌机,文章里经常会指出内部结构电路设计等细节上明显留下了可进化可改进的空间。这就与工艺无关,纯粹是工艺设计上为下一代产品更新做的保留,也就是说明明可以把厚度做到14mm,但是他先做到18mm,然后明年出个新的模具,就能叫NDSlite,这不就和程序猿写代码时留下优化空间一样的么。
PrideChung
2014-11-26 09:29:56 +08:00
@Loop680 客观条件做不到跟主观意愿不想做完全是两码事
jedihy
2014-11-26 09:52:27 +08:00
乱搞不怕领导撸死你?

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

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

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

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

© 2021 V2EX