问题

程序员有哪些借口可以让自己写出低质量的代码?

回答
程序员嘛,写出烂代码,有时候也不是故意,就是各种“客观原因”嘛。我琢磨着,这原因可多了去了,而且每个理由都还挺有道理的,就像是为自己的“作品”找了个精神导师似的。

首先,最常见也最“正当”的,就是 “时间太赶了!” 这个理由。项目上线日期像一把达摩克利斯之剑,悬在头上。老板、产品经理、甚至隔壁部门的同事,都盯着呢。在这种压力下,你还能指望我一字一句都抠到极致?能跑就行,能上线就行,至于那些美好的设计模式、优雅的算法,先放一放,等有空了再说。当然,“有空”这个词,跟“下个版本”一样,是个薛定谔的猫,你永远不知道它什么时候会出现。所以,为了赶进度,各种“先这样吧”、“临时改一下”、“这个功能能跑就行”的念头就会冒出来,然后,嗯,烂代码就这么诞生了。

然后,还有 “需求不明确/频繁变动”。这个更是杀手级的理由。需求文档写得云里雾里,或者今天一个想法,明天一个想法,前天刚定的功能,今天说不要了,昨天实现的逻辑,今天说要反过来。在这种情况下,程序员就像是在黑暗中摸索,每走一步都可能踩空。你辛辛苦苦写了一堆代码,结果第二天发现这堆代码已经成了“历史遗留问题”,得推翻重写。为了不白费力气,你就只能赶紧把眼前的东西先弄出来,祈祷下个版本能有人来“收拾残局”。结果可想而知,代码就成了各种临时方案的堆砌,结构混乱,可维护性极差。

再来就是 “对业务理解不够深入”。这个听起来挺高尚的,好像是程序员的“谦虚”。但有时候,是真的不理解。比如,一个功能,老板说要“智能一点”,产品说要“用户体验好”,然后你就得自己去揣摩这“智能”和“好”到底是什么鬼。你可能从技术的角度实现了某个逻辑,但从业务的角度来看,这简直是反人类。但你没办法,因为你不知道背后的深层原因。所以你就只能根据自己的理解去写,写出来的东西,可能技术上没毛病,但业务上就是个大坑。这种代码,维护起来也麻烦,因为你不知道当初写这逻辑的人是不是脑子被驴踢了,还是他有自己的苦衷。

还有个常被提及的,叫做 “技术债积累”。这个说法很专业,听起来就像是一种“病”。本来一开始写的时候还能凑合,但随着项目不断迭代,新功能不断叠加,老的代码就成了“绊脚石”。每次要在这个地方改东西,都得小心翼翼,怕牵一发而动全身。最省事的做法就是,在这部分代码旁边再写一段新的代码,或者直接在老的代码里加判断,绕来绕去,代码越来越丑陋,逻辑越来越复杂。这种“技术债”,就像是住在老房子里,本来只是想换个灯泡,结果发现电线老化了,得重新布线,但又没时间,只能贴个胶带,然后…你懂的。

当然,还有一些比较“个人化”的理由。比如 “今天状态不好”。有时候就是心情不好,或者没睡好,脑袋不够灵光。在这种情况下,思维就容易变得迟钝,写出来的代码也容易出现各种低级错误,比如变量名写错,逻辑判断反了,注释也懒得写。你能指望一个头昏脑胀的人写出什么好东西吗?

另外, “不熟悉使用的技术栈”。虽然项目用的是某个技术,但程序员自己对这个技术也就是个半吊子。为了完成任务,就只能边学边写,边写边查资料。这种情况下,写出来的代码很可能是不够高效,甚至是有安全隐患的。虽然用了某个框架,但用得不对,就像是给一把锤子装了一个螺丝刀的头,虽然能敲敲打打,但效率肯定不高,而且容易损坏工具。

还有一种情况,叫做 “为了追求所谓的‘简洁’或‘聪明’”。有些程序员就喜欢写那种一眼看上去很牛逼,很精妙的代码。他们会用各种高级的语法特性,或者把一长串逻辑压缩成一行代码。但这种代码,对于其他人来说,简直是天书。一旦出了问题,想 debug 或者修改,那简直是灾难。写出这种代码的程序员,往往是抱着一种“看我多聪明”的心态,但实际上,这是一种自娱自乐,给别人挖坑的行为。

最后,还有一种可能,就是 “觉得没必要写得太好”。有时候,程序员会觉得,这个功能只是个小小的改动,或者这个模块很快就会被重写,没必要花太多精力去打磨。这种想法看似合理,但往往会导致小问题慢慢变成大问题,最终影响整个项目的质量。就像是你只是想在墙上钉个钉子,结果因为不想打磨钻头,就用了个钝的钻头,结果把墙弄得坑坑洼洼的。

说到底,写出低质量的代码,就像是在生活中的各种缝隙里冒出来的,有的是客观环境所迫,有的是主观懈怠所致,还有的,就是纯粹的“意外”了。不过,我倒是觉得,有时候这些“借口”,也挺让人理解的,毕竟,谁还没写过几行让自己现在看了都想挠头的代码呢? 这大概也是一种成长的印记吧。

网友意见

user avatar

我很久很久以前曾经经历的一个公司特别傻比,人力资源和svn管理员不懂程序。

作为服务端的主程序,一直以来都是代码精简,效率最优,没有冗余为毕生追求。

突然我无意中发现了一个秘密,我的绩效居然不如几个公司刚招进来的新手。

我每天刻苦努力,优化代码,让公司的服务端7*24稳稳跑在服务器上,还一心研究各种热切换,换来绩效考核好久没有优秀了。

这究竟是为什么呢,后来好心人告诉我,人力资源说了,他们看了svn的日志记录,其他人工作很努力,每天提交很多代码,每天新编写很多很多代码文件,贡献了好多好多的劳动成果。

而看看你这个号称技术排第一的家伙,根本就没干活嘛,3个月下来,你一共就写了这么十来个cpp和.h,每天改来改去就这么几个文件,还好多天差不多行数的位置回改,根本就一直在偷懒。

我听完以后以后直接口吐鲜血,无语至极了。

然后我就申请离职了,在那个公司剩下不多的日子了,我为了心安理得的拿最后2个月的工资,为了让老板知道其实我一直很努力,我在最后一个月更新了几千个文件,让服务端的内核稳定度下降了好几个档次,内存消耗上涨了好多个数量级,并且把容易读,容易后续扩展的部分,全部用c++最高级的模版进行扩展,同时删掉了我以前用汇编写的优化代码。

嗯,我想以后这个公司估计会倒闭,我走了以后,再也没有人能维护这份代码了,估计3个月以后,我自己也搞不定了。

然后我就离职了,离职之前老板大夸我厚道,最后一个月还给公司做了这么多的事情,别人走都是删代码,我居然还毫无保留的为公司做出贡献。

然后我走了不到半年,公司就呵呵了。

我想那是我此生唯一写垃圾代码写的心安理得的一次机会了。

user avatar

很显然这个SB的功能不会真的有人去用的。

类似的话题

  • 回答
    程序员嘛,写出烂代码,有时候也不是故意,就是各种“客观原因”嘛。我琢磨着,这原因可多了去了,而且每个理由都还挺有道理的,就像是为自己的“作品”找了个精神导师似的。首先,最常见也最“正当”的,就是 “时间太赶了!” 这个理由。项目上线日期像一把达摩克利斯之剑,悬在头上。老板、产品经理、甚至隔壁部门的同.............
  • 回答
    .......
  • 回答
    高级程序员和普通程序员之间的区别远不止是代码量的多少或入职时间的早晚。它是一个涵盖了思维方式、解决问题能力、技术深度、软技能以及职业发展等多个层面的综合体现。下面我将尽可能详细地阐述这些区别: 一、思维方式和解决问题能力:1. 问题分解与抽象能力: 普通程序员: 更倾向于直接处理具体问题,一步一.............
  • 回答
    成为一名 iOS 开发高手,并满足对 iOS 程序员的高要求,需要一个持续学习、实践和深入理解的过程。以下将详细阐述成为 iOS 开发高手的路径以及对 iOS 程序员的核心要求: 如何成为一名 iOS 开发高手?成为 iOS 开发高手不是一蹴而就的,它需要你在技术深度、广度、工程实践、问题解决能力以.............
  • 回答
    程序员作为一群高度逻辑化、注重细节且常常沉浸在抽象世界中的群体,确实容易发展出一些在旁人看来可能有些“强迫”的行为。这些行为往往源于他们对代码质量、效率、一致性以及对问题的深度理解和控制的追求。下面我将详细列举一些常见的程序员强迫行为,并尝试解释其背后的原因: 1. 极致的代码洁癖和风格统一 具.............
  • 回答
    程序员行业,和其他很多行业一样,存在许多“过来人”的经验之谈,这些道理越早知道,越能帮助你少走弯路,更高效地成长,并在这个充满挑战和机遇的领域中获得更大的成功。以下是一些越早知道越好的道理,我将尽量详细地阐述:一、 关于学习与技能掌握:1. 编程语言只是一种工具,思维方式和解决问题的能力更重要。 .............
  • 回答
    程序员界的经典笑话有很多,它们往往能精准地触碰到程序员日常工作中的痛点、思维方式、以及程序员特有的幽默感。这些笑话之所以经典,是因为它们具有广泛的共鸣性,即使非程序员也能从中理解到一些乐趣,但对程序员来说,则能体会到更深层次的含义。下面我来详细讲述几个非常经典的程序员笑话,并解析它们的有趣之处: 笑.............
  • 回答
    程序员的“逻辑神操作”,这说起来可就有点门道了。这不是三言两语能概括的,更像是一种深植于骨子里的思维方式,遇到问题时,他们会跳出常规,用一种看似匪夷所思但又无比高效的方式去解决。下面我来给你掰扯几个我亲眼见证或者听说的“神操作”,保证够味儿。1. 临时的“魔法数字”与最终的“优雅蜕变”想象一下,一个.............
  • 回答
    作为一名程序员,我一直在折腾几个个人项目,说实话,这些项目有的是在积累经验,有的是纯粹为了满足好奇心,还有些则是希望能解决自己生活中遇到的一些小麻烦。下面就给你仔细说说,尽量把它们讲得生动点,让你感觉像是跟我面对面聊天一样。1. 那个“万物皆可搜”的私有知识库(正在进行中,迭代更新ing)这个项目是.............
  • 回答
    上古时期的程序员,也就是我们今天所说的早期计算机科学家、工程师和技术先驱们,他们的工作环境和工具与我们现代程序员相比,简直是天壤之别。正因如此,他们所能完成的“神级操作”,很多是我们现代程序员在舒适的 IDE、高级语言和强大的硬件支持下难以想象的。这里我将从几个方面详细讲述这些“神级操作”,并尽可能.............
  • 回答
    这题目一下就勾起我太多“不堪回首”的往事了。程序员这行,你说怎么会有那么多“崩溃”的瞬间呢?我总结了一下,大致可以分为几个大类,每个大类下面又有些具体场景,我尽量详细地给你掰扯掰扯。一、 代码就是不好好工作,我该怎么办?这是最最基础,也是最最频繁的“崩溃”类型。感觉自己就像在跟一个固执己见、顽固不化.............
  • 回答
    程序员作为一类特殊的群体,在长期的代码编写、问题排查、技术学习和团队协作过程中,逐渐形成了一些独特的、可以说是“程序员特有”的习惯。这些习惯往往根植于他们的工作方式、思维模式,甚至对世界的认知。以下我将尽量详细地阐述这些习惯:1. 对细节的极致追求与“完美主义”倾向: 代码的严谨性: 这是最核心.............
  • 回答
    程序员世界里充满了只有我们自己才能理解的梗,它们源于我们的工作日常、技术特点、以及对代码世界的独特视角。这些梗的魅力在于,它能瞬间拉近程序员之间的距离,成为一种默契的“暗号”。下面我将尽量详细地讲述一些经典的程序员梗: 1. 那些与0和1有关的梗这是程序员世界最基础的梗,但也最经典。 “世界上有.............
  • 回答
    作为一名在代码世界里摸爬滚打多年的老兵,我脑子里盘踞着不少“不正经”的写法,它们不像教科书里那样一丝不苟,但有时候,就是能在不经意间闪耀出那么一丝……嗯,怎么说呢,就像是给枯燥的流水线作业加了个花边,或是让一份普通的请柬变得有些小小的仪式感。我不敢说这是什么“炫技”,毕竟代码的终极目标是清晰、可维护.............
  • 回答
    嘿,说到程序员,脑子里立刻就会跳出一些跟常人不太一样的技能。当然,不是说我们有多神,而是长年累月跟代码打交道,一些特别的“肌肉记忆”和思维方式就练出来了。我给你好好掰扯掰扯,尽量说得接地气点,没有那种干巴巴的“AI味儿”。1. 刨根问底的 Debugging 能力这绝对是程序员的看家本领,而且跟我们.............
  • 回答
    作为一名摸爬滚打了多年的程序员,深知键盘对于我们这个靠码字吃饭的职业来说,绝不仅仅是个输入工具。它更像是一把趁手的兵器,一把得心应手的工具,甚至可以说,是我们在虚拟世界里创造现实的延伸。用一个不舒服的键盘,那简直是如鲠在喉,每天都要忍受指尖的煎熬,效率和心情都会大打折扣。所以,聊到程序员适用的键盘,.............
  • 回答
    成为一名程序员,日子可不是你想象中那么轻松。这行当,压力,那真是时不时就来找你,而且花样还挺多。首先,最直接的,就是那个“截止日期”像一把达摩克利斯之剑,永远悬在头顶。项目有了新的需求,客户那边催得紧,领导为了在老板面前有个交代,自然就得把压力层层向下传递。你看看,你面前这堆代码,还没写完,客户就说.............
  • 回答
    作为一个在这个行当摸爬滚打了些年头的老家伙,聊起“解 Bug”这事儿,总感觉像是要分享自己的看家本领,但又觉得这玩意儿吧,与其说是套路,不如说是经验的沉淀,是和无数个“怎么回事?”的夜晚搏斗出来的“直觉”和“方法论”。不过,如果非要说有什么通用的“套路”,那大概可以归纳为这么几个阶段,每个阶段都有点.............
  • 回答
    台湾公司停电后程序员用纸笔手写代码,这个故事确实很有代表性,也勾起了我作为一名程序员对过往的一些神奇经历的回忆。我自己的经历可能不像用纸笔写代码那样戏剧化,但同样充满了挑战、创造力和一丝“程序员式的浪漫”。让我回忆一下,我最能称得上“神奇”的一次工作经历,那是在我刚入职一家创业公司不久,负责一个早期.............
  • 回答
    当然!作为一名新手程序员,很容易陷入一些固有的思维模式或遗漏一些能够极大提升效率和代码质量的小技巧。以下是一些我作为AI,通过学习大量优秀代码和程序员的经验总结出的、新手程序员可能不知道但非常有用的技巧,我会尽量详细地解释: 1. 拥抱你的 IDE(集成开发环境)的强大功能新手往往只把IDE当成一个.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有