场景:为了赶项目进度,你写的代码并不优美(很烂)。你知道,作为 coder,这不是你想要的;作为职员,这也无可厚非; 问题:当你发现一直在赶进度,你也一直再写“烂代码”,你会怎么办?

2019-06-14 11:06:48 +08:00
 NilXuan
实际上,这是我进入导师公司后的真实场景;
个人技术水平中等,但是对技术有着自己的追求,不愿写“烂代码”——不可重用、不可维护、不可扩展;自身水平也能维持项目进度,当然代码质量不高;项目 leader 也没有为提高代码质量降低开发速度的意愿,也就是“能跑就行”这样的态度;
我希望能够通过参与项目,提高编码水平,但是我现在发现,在实际的项目开发中,我只是做着毫无营养的输出,并没有输入。可以预见,这样下去,即便 10 年后,我还是现在的编程水平;
如果是你,你会怎么办呢?是继续在上班时间写着让自己不舒服的代码,一边学习良好的编码规范;还是 say goodbye ?或者还有其他的处理方法?
13858 次点击
所在节点    程序员
130 条回复
gulili
2019-06-14 13:51:47 +08:00
充分理解场景,但不是很同意,追求项目进度就会代码写得烂的因果关系,好的代码结构,开发高效本来就是一个重要的因素。烂分两种,一种是真烂,连基本的规则都不遵守,各种 hardcode,胡乱抽象方法函数等等,这个跟时间没关系,人的问题,还有一种假烂,因为需求会一直在变或者增加,再看前人的实现就感觉各种不可维护扩展。前者需要经验积累,后者就像 @posebear1990 说的随时重构是免不了的。个人觉得写代码跟大多数技工是一样的,要用巧劲,不能用蛮力。产出最多的不一定是加班最多的。
whypool
2019-06-14 14:02:55 +08:00
copy 过来,能跑就行,又不是不能用
broadliyn
2019-06-14 14:12:45 +08:00
所谓的代码优美对公司的效益来说并不值钱,稳定能跑能实现功能就是好代码,况且大部分情况下你自以为优美的代码在别人看来也是一坨 shit。所以请各位码农不要把自己太当回事。

体现一个程序员的功底和价值的地方不在于写出多么优雅的代码,而是在是否能快速上手其他人的代码,在他人的基础上快速实现功能的迭代。

现在互联网项目的发展方向是服务化,把传统那种大而全的项目拆分成各种小模块由不同项目组团队负责维护,这样能极大的降低耦合、方便维护迭代。真的有某个模块因为技术原因导致项目无法迭代下去的时候,另行组织人员重构该模块就是了。
seabirds
2019-06-14 14:16:36 +08:00
@q8164305 饿死了吗?😄
no1xsyzy
2019-06-14 14:18:08 +08:00
@hyuka 从来没有一个那个时期的画家能够做到任何 “好的环境”。有顿吃的就已经不错了…… 一说创作需要苦难,或许这反而是 “好的环境”?
hstdt
2019-06-14 14:19:04 +08:00
在不影响进度的情况下,尽可能不写垃圾代码,尽可能重构。对自己要求严格一些,坚持下来,相同时间码出的代码,平均水平就应该能比别人高。
no1xsyzy
2019-06-14 14:25:55 +08:00
@broadliyn 你这突然启发了我。
这个 “拆分” 就像是一个 supervisor,而一个个小模块就好像一个个进程。
erlang (以及重新发明的微服务架构)强调快速失败重启。
那么可能相比 “无法迭代下去”,不如以更快的 “迭代稍有变慢未能在指定时间内交付” 视作重启信号?
同样如果在连续五个周期内出现三次未能交付就应该主张指定时间不合理或者模块划分不合理。
charlie21
2019-06-14 14:41:57 +08:00
你就说这是不是写 java 的人的常态吧
Canon1014
2019-06-14 14:49:17 +08:00
一直很好奇国外一般的公司注重质量吗
jsq2627
2019-06-14 14:49:28 +08:00
行业的系统性问题
大多数情况是,还没等技术债积累到不得不优化的时候,业务已经死了
或者是,如果放缓业务优化重构代码,竞争对手是毫不留情的(参考去年 shopee 把阿里 lazada 按在地上摩擦)

如果你不幸遇到了这样的业务,那么
1. 保证自己新编写的代码是可维护的,和已有的垃圾代码减少耦合
2. 下班参与开源项目,自我提升
3. 业务节奏放缓时,小步重构代码
zzh1224
2019-06-14 14:50:20 +08:00
强迫自己尽可能写好,这样才能成长吧
IsaacYoung
2019-06-14 14:53:20 +08:00
跑路
zjsxwc
2019-06-14 14:58:37 +08:00
力所能及的情况下顺手重构, ———— 每次离开时比来时更干净,by “童子军规”
yiqiao
2019-06-14 15:03:01 +08:00
我发现我提升代码质量都是在非工作时间学习而来的,然后在运用到工作上,楼主看开点。
sesmond
2019-06-14 15:03:25 +08:00
为什么赶进度代码就烂我是一只不明白为什么那么多人都这么说。
赶进度顶多是代码逻辑漏洞多吧,不能说代码结构就烂吧?
linxl
2019-06-14 15:04:40 +08:00
最后:
好处, 解铃还须系铃人, 保住了工作;
坏处, 灵魂没有得到升华, 愤恨离职.
hmzt
2019-06-14 15:49:56 +08:00
写出更好的代码就算是有输入了吗,我怎么觉得还是在输出?
hyuka
2019-06-14 16:16:55 +08:00
@no1xsyzy 再深入思考觉得就慢慢往哲学方面靠了,以我来看,“好的环境”就是有充足的时间去做想做的事。这里面的环境是为了某种原因不得不花费大量时间写烂代码,这就不算“好的环境”
hyuka
2019-06-14 16:17:51 +08:00
@hyuka 这里的想做的事我指的是写优雅的代码
gowk
2019-06-14 16:32:09 +08:00
都说了是为了赶进度,赶进度的意思是时间不充裕,在时间不充裕的情况下,你没时间好好思考,你没时间重构,你甚至都没时间给变量起一个好的名字,你更没时间进行优良的设计,特别是当你的设计还需要去重构依赖模块的时候。退一步讲,就算做了优良的设计,你也没时间跟团队成员去沟通让他们理解你的设计,于是,你不得不退而求其次,写一些扩展性差的代码,引入一些临时性的 dirty hack。基本上碰见这种快节奏的开发工作时,就是你该离开的时候了,但你下份工作大概率还是这样,除非你已经达到一定的高度,一个别人难以企及的高度,那就另当别论了。

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

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

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

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

© 2021 V2EX