代码和人,有一个能跑就行。为啥程序员总写dirty code

在程序员行业有一句:“代码和人,有一个能跑就行”。这句话对吗?为什么会产生这个问题?

哪些代码能跑就行?

有一些代码,真的就是不能动,一动就崩。里面逻辑复杂, 代码冗余,具备了一些不良代码的特征,但是它就是能跑,就是能支撑业务。有一个通俗的称谓为“屎山代码”。

哪些是dirty code

  • 缺乏注释和文档:完全没有注释或者复杂逻辑无文档
  • 命名不规范:变量、函数和类的命名不符合约定或没有约定 例如a,b,c,变量用动词,方法用名词,驼峰下划线混用等
  • 代码重复:同样的代码逻辑在多个地方重复出现,增加了维护的难度。 代码不做抽象,公共方法复制拷贝,一个方法复制多份
  • 复杂的逻辑:代码逻辑过于复杂,缺乏清晰的结构和模块化设计。
  • 硬编码值:使用硬编码的数值或字符串,而不是使用常量或配置文件

dirty code是如何产生的?

时间压力

项目不给足够时间,倒排期工程,项目经理整天催催催,老板天天问进度。预计5天,报了6天,砍到3天,1天的时候问做到哪了,2天问怎么还没做完。 你让我抽象,你让我搞架构,但是不给我时间,写出来的代码优先要进测试,提了bug再改改呗,反正缝缝补补又3年。

过于自信

自认自己的代码足够牛b。

不需要注释就可以看懂,不就是几个变量名吗?别人理一理逻辑就可以了,我的代码自己可以解释自己。 不需要抽象,这里都是一整套逻辑的。什么?你也要用这套代码,自己复制出去,别动我代码。我们要签订《代码互不侵犯条约》。

经验不足

新手小白能完成任务就不错了,什么鲁棒,什么设计模式,完全不需要考虑。一个函数500行?抱歉那是这个功能的瓶颈,不是我的瓶颈。

企业文化,标准/规范缺乏

你还记得你上一次做code review是啥时候吗?在夜深人静的时候,有没有回想每天996为啥老板还没开上大奔?

老板要的是结果,不是过程,代码写的再好,最后业务不核心,不干掉你干掉谁?

防御型编程

这个不多说了,懂的都懂。

#牛友故事会#
全部评论
我就懒得怕写注释,没其他原因,就是懒
点赞 回复 分享
发布于 08-30 21:13 陕西

相关推荐

1. 能详细说一下你这个实习做的一些主要的工作吗?(针对简历中的实习经历)2. 能简单说一下 TCP 和 UDP 的一些区别吗?3. 能详细说一下,比如说 TCP 和 UDP 他们一些连接过程吗?4. 我看你有熟练掌握 Redis,能说一下 Redis 的一些数据结构吗?都有哪些数据结构或者有哪些类型?5. 你能说一下咱们 Redis 有一些底层的数结构有了解过吗?6. 比如说他们的压缩列表或者跳表,他们是有一些什么特点呀或者怎么做的呢?有看过他们的原理吗?7. 还有一些比如说他们的一些主从储存或者集群的模式下的那些数据同步有了解过他们是怎么做的吗?8. 内存淘汰策略有了解过吗?有哪些特点?9. 刚刚有提到这个 IO 多路复用呢,简单介绍一下这个是什么原理或者怎么做的吗?10. 我用过 MySQL,然后能说一下 MySQL 的一些索引底层原理吗?11. 我看你也有熟悉 B+ 树的一些原理,比如你可以说一下 B 树或者 B+ 树他们的一些区别。12. 能说一下 MySQL 的一些事务它是怎么实现的吗?13. 你日常实习的时候有用到过 MySQL 事务这些有遇到过一些问题吗?14. 我看你有用有了解常用的一些设计模式,日常的项目中有用到过吗?15. 我可以能找一个我看,比如说策略模式能给他说一下吗?是怎么用的?你什么时候你会用这个策略模式?16. 比如聊一下 JVM 的一些内存结构吧。17. 然后他们有一些比如说他内存,比如说他的内存回收的时候比如说 GC 呀,能简单介绍一下吗?18. AQS 有了解过吗?能简单介绍一下吗?19. 我们聊一个算法的题吧,比如说我想有一个我要定一个方法,然后这个方法是一个入参是一个二叉树的一个根的结点。而且在于一个根结点,然后可能我需要返回的结果是一个 int 类型的值,然后这个 int 类型的表示二叉树的一个深度最大的一个深度。你可以说一下我们要去怎么实现这个方法。这些其实都很简单, 非常简单的八股, 大概19分钟, 一个都不追问, 回答完就下一个更新:第二天挂了, emo了一周复盘:虽然可能回答的不是很流畅, 因为没练过表达能力,加上第一次秋招面试又紧张,有我自己一部分原因, 但是面试官不追问,不细问一个知识点, 19分钟结束,多少是本身就不想招的
查看19道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务