看了吐槽同事代码风格的帖子来的,我的一点感想

2020-09-28 06:54:30 +08:00
 good1uck
我觉得这事情最后还是谁经验多谁说的话有道理。
我刚入职那会也想着怎么把自己代码写漂亮,觉得又自由又有情怀,后来我们公司一个技术挺强的人看了我的代码只告诉我如果他需要给我改东西,他会无从下手。虽然是符合某种开发模式,特别规范,但是做某种小而快的东西,对接的时候就会有点麻烦,这个时候技术比我强的可能直接就推翻重写。
一开始学的时候不知道从哪些书上或知乎上看到要强调优雅,简洁。有时甚至会刻意避开 if else 用其他语法糖,就开始有点那种洁癖?觉得这样的才是好的?自己敲出某种很俗的代码就忍不住会去优化,行数越短越好,单方面给自己施加压力。
3285 次点击
所在节点    问与答
36 条回复
Yutang
2020-09-28 13:48:55 +08:00
@Mindjet 划分到无限小,划分的意义我感觉就不大了。我感觉,别喷
zsyld
2020-09-28 13:57:52 +08:00
我就很烦那种 if 后面不跟{ } 和换行,直接写代码的 不管你 if 里的代码只有一行 return 或者其他什么 就是烦
THESDZ
2020-09-28 16:54:47 +08:00
非业务代码,可以封装,抽象 => 让写业务的人调用简单(最好无感,例如 aop,拦截器等)
业务代码,按照人类理解的流程去写就行了
5yyy
2020-09-28 17:50:08 +08:00
我以前的领导经常给我强调,代码是给人看的,保证正常执行外,“活人理解”是最重要的。
jiyingze
2020-09-28 18:12:48 +08:00
@good1uck 经验多了就学会妥协了。代码写的好,leader 又看不到。有时候,在面向晋升编程的公司里,你还必须得有把简单事情复杂化的能力。不然评委只觉得你的工作好简单,你的水平也好低
chuyang
2020-09-28 20:00:06 +08:00
如无必要,勿增实体
MrStark
2020-09-28 20:49:09 +08:00
我最烦的事就是我封装好的东西被猪队友破坏性更新,那时候真的很烦。
lovecy
2020-09-28 21:08:20 +08:00
那个帖子,一开始我是持代码能跑就行,逻辑越简单越好的态度。

然后我试着按楼主的需求去添加,发现那个代码真的写的屎一样,就算是从自己以后维护的角度来说,也应该写简洁一点,而不是复制粘贴就往上堆

可以看我在#280 的回复。。
594duck
2020-09-29 05:21:20 +08:00
老工程师们因为看的多知道什么是真的有害,什么只是锦上添花。

这就是一个老鸟和菜鸡的区别线。
Mindjet
2020-09-30 19:59:28 +08:00
@Orenoid #14
谢谢你的经验分享,我也有这种感觉,自从看了这本书之后,写代码基本上就不用注释了,因为那些名字,一看就基本上能想起来。

遇到比较重要的函数,就会单独拎出来写个文档。

最近在学「测试驱动开发」(单元测试),如果要很强调可读性,测试驱动开发会不会是很好的选择?

如果稍微重要点的函数都有很多的单元测试来进行覆盖,那么顶多跑测试就能够知道大概的作用,不需要阅读内部实现了。

这样就解决了变量名鸿沟问题,当你运行测试之后,你的理解水平就更接近于写代码的人,那样的话就不会有很大问题了。
Mindjet
2020-09-30 20:08:24 +08:00
@Orenoid
这个观点来自另一本讲代码质量的书,叫做《修改代码的艺术》,主要内容就是处理遗留代码,你说的那个场景正好是这本书讲述的范围。

它里面对遗留代码做了重新定义,认为只要是没有被单元测试覆盖的代码,都算是遗留代码。

当时我对单元测试还有测试驱动开发都不熟,所以最近就没有继续看下去,正在学这方面的内容(《 C++程序设计实践与技巧 测试驱动开发》),感觉还是挺不错的。
Mindjet
2020-09-30 20:13:58 +08:00
@good1uck #1
对于这种复杂问题来说,「那得看情况」基本上是不会有什么错误的,「实践是检验真理的唯一标准」。

有些人非要在这种经验上和别人争执,其实没有什么必要,「上司 CTO 」可能是个见多识广的人,在这行混久了已经懂了。

因为情况太多太复杂,没有什么「银弹」。

这是个底层认知,是个常识,如果简单的提问,这么回答是完全没有问题的,这提醒大家不要忽略这个问题的复杂程度。

但如果你是很较真的去想这个问题,那么这个层次就有点太低了,这个回答是没有办法直接指导实践的。

如果要想得到结论,就要去做实证研究。

这方面社会科学和医学的研究方法可以借鉴下,因为这些经验都与人的行为有很大的关系,绝对不是理化生这样的基础学科研究的范畴,应该也不是工程类研究的范畴。


不过有这些学科背景的程序员可能并不多吧,所以大多数人可能不太理解。
Mindjet
2020-09-30 20:49:40 +08:00
你这个帖子很有特点,好像很少有什么帖子,是因为看了别人的帖子有个想法,然后另发的。

实际上我觉得这挺好,因为在大多数时候我是不太喜欢爬楼看东西的。

如果感觉某个点重要,应该引起更多人的重视,那么单独弄帖子,真的挺不错。
good1uck
2020-10-02 10:58:51 +08:00
@raaaaaar 确实 大实话就是这样 其实这样一想真的挺缓解洁癖的
@Mindjet 如果您是我上司,我觉得我会死心塌地跟你混
good1uck
2020-10-02 11:07:58 +08:00
@MrStark 确实,但是耐心地看完别人的封装也很难吧,相当于要去学习一遍别人的思维
good1uck
2020-10-02 11:11:01 +08:00
@Mindjet 哈哈,那个帖子比较有热度,有感想的人应该挺多的,我就拓展一个话题出来。相当于蹭了热度,也能和更多人讨论。

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

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

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

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

© 2021 V2EX