二十年前读中学的时候,有一位语文老师特别促狭。有一次上作文课,上来说,“今天我要请一位同学来读一读他自己的作文。不过这次和以前不同,我要求连标点符号也要读出来。小K同学,上讲台来读吧!”
小K是班里一位成绩较差的学生,不知道为什么被点名念作文,这通常是优秀学生的荣誉啊。难道小K写了一篇美文?
被点名的可怜的小K慢慢地挪上了讲台,拿着自己的作文本,在手里捏来捏去,半天也没吭气。
老师一把拿过来,“我来念吧!”
只听到老师念了头句,“今天我的作文题目是坚持就是胜利,”说“逗号。”,又念了一句,又是“逗号。”
开始,全体同学没听出什么意思,不过,在老师读到第十个逗号的时候,就开始有人发笑了。待到老师不停的“逗号逗号逗号”时,全面开始笑成一片。小K这篇文章,竟然是从头逗号到尾!直到文章结束,才有一个句号!
我当时也参与了笑话小K,年纪见长,慢慢有些同情小K,觉得那位老师不该这么刻薄,让小K如此丢脸。不过这老兄的作文,未免有些太离谱。
以作文而论,“逗到底”的文章大概是最糟糕的文字了。
那么,什么是最糟糕的程序员呢?很不幸,如同写文章一样,有“逗到底”的程序员。更不幸的是,小K知道这“逗到底”是不好的文章,很多“逗到底”的程序员还常常自以为高明!
什么样的代码是“逗到底”呢?
实现一个功能,不分青红皂白,从头到尾一个函数写到底。你打开代码一看,奥,有一个类,有一个函数,再打开函数,天哪,长到你把鼠标的滚轮摩擦烫了都看不到底。然后他(她)还会告诉你,他(她)的模块很复杂,这是为什么改一个简单的Bug要三天的原因。因为定位到错误点得靠搜索关键字,甚至连搜索都要10秒钟呢!
于是你告诉他(她),你的代码很糟糕。他(她)的回答是:你看,我的代码很整齐啊!
“不行,你得重构你的代码!”
过了几天,告诉你,好了。一看,现在有一个类,两个函数了!原先的大函数被齐腰截成两段,分别放在了原来的函数和一个新函数中。昏倒。
“逗到底”的程序员还喜欢非常深的分支。有一次,有位“逗到底”先生向我展示的代码:最上面是一个for循环,里头有个if…else…,每个if从句有for循环,for循环中还有if…else………我看来一会儿,已经完全迷失了,这老兄还向我解释,“你看,排除这个条件后,进入这……”我又晕。用工具一看,竟然有12层之多。我记得大师说过,人类大脑只能立即理解三层嵌套关系,这老兄,我只能佩服啊佩服了。
写出“逗到底”代码的就是“逗到底”程序员。其实就是不会程序设计的程序员。我把设计分成产品设计,系统设计和程序设计。产品设计是有产品经理完成的,描述了产品的特性,系统设计描述了系统框架,不如数据库和应用服务器的关系等,程序设计就是对代码结构的设计。我发现很奇怪的一点,声称要成为构架师的很多人特别重视前面两个设计,但很少有人关心程序设计。大部分程序员拿到需要文档后,立马开工,UI画上去,遇到什么逻辑就临时加上。所有的逻辑是平铺直叙,遇到干同样的事情的代码,也抽象成一个函数,而是直接拷贝代码。时间一长,代码就彻底“逗到底”了。谁也不敢改。
好了,你,会是“逗到底”的程序员吗?
分享到:
相关推荐
《程序员的灯下黑:重知识轻技术》 在当今的IT行业中,程序员扮演着至关重要的角色,他们构建了我们日常生活中所依赖的各种软件和应用。然而,正如标题所示,“程序员的灯下黑”揭示了一个普遍存在的问题:很多...
### 程序员面试智力题解析 #### 两柱香问题 **题目**: 给定两根燃烧时间均为1小时但燃烧不均匀的香,如何利用这两根香准确测量出15分钟的时间? **解答**: 此题的关键在于如何巧妙地利用两根香的不同燃烧特性来...
在一个夜黑风高的晚上,小孩吵着要出去玩,于是和程序员老婆一起带小孩出去放风,路上顺便讨论起项目要换个什么名字,在各自想出的名字都被对方一一否决后,,大家包围了沉思。走着走着,在一盏路灯下,孩砸盯着路灯...
在一个夜黑风高的晚上,小孩吵着要出去玩,于是和程序员老婆一起带小孩出去放风,路上顺便讨论起项目要换个什么名字,在各自想出的名字都被对方一一否决后,,大家包围了沉思。走着走着,在一盏路灯下,孩砸盯着路灯...
灯快速开发平台灯项目名字由来叙事版:在一个夜黑风高的晚上,小孩吵着要出去玩,于是和程序员老婆一起带小孩出去放风,路上顺便讨论起项目要换个什么名字,在各自想出的名字都被对方一一否决后,,大家包围了沉思。...
lamp 快速开发平台lamp 项目名字由来叙事版:在一个夜黑风高的晚上,小孩吵着要出去玩,于是和程序员老婆一起带小孩出去放风,路上顺便讨论起项目要换个什么名字,在各自想出的名字都被对方一一否决后,大家陷入了...
lamp 快速开发平台lamp 项目名字由来叙事版:在一个夜黑风高的晚上,小孩吵着要出去玩,于是和程序员老婆一起带小孩出去放风,路上顺便讨论起项目要换个什么名字,在各自想出的名字都被对方一一否决后,大家陷入了...
利用深度搜索来实现怪兽自动寻找出口:先将起点位置放入栈中,并设置状态为已寻找过,然后设置一个试探点,改变当前点的方向,然后看下一步是否已寻找过且像素是否为白色,若满足,就将试探点的值赋给当前点,并标记...
在这种情况下,警车灯的控制逻辑被编码为ASM指令,以实现复杂而高效的灯光效果,如频闪、交替闪烁等,这些模式通常用于紧急车辆的警示功能。 【标签】"emc78p153" 代表了这个项目的重点,即使用的是EMC公司的78P153...
3. **硬件控制**:如何使用 MicroPython 控制GPIO(通用输入/输出)引脚,实现对LED灯、按钮等硬件设备的操作。 4. **网络编程**:学习如何在 MicroPython 上实现网络连接,如创建TCP/UDP套接字,发送和接收数据。 ...
在IT领域,键盘是人机交互的重要工具,尤其对于程序员和电脑用户来说,选择一款适合自己的键盘至关重要。本文将深入探讨“高端大气上档次”的键盘所涉及到的技术特点、设计考量以及与C#编程语言的关联。 首先,让...
这些指令在PLC编程中起到关键作用,帮助程序员根据输入信号控制设备的运行状态。通过合理组合使用这些指令,可以实现复杂的逻辑控制,满足不同工业应用场景的需求。理解并熟练运用这些基本指令是进行PLC编程的基础,...
在软件开发方面,使用的是Code Composer Studio (CCS) v6.0开发环境,它为程序员提供了一整套程序编制、维护、编译和调试的环境。CCS提供了简洁的用户界面,高级代码编辑器和GUI框架,因此是一款广泛使用且受欢迎的...
这种键盘设计尤其受到程序员、游戏玩家和打字员的青睐,因为它减少了桌面空间的占用,同时保持了常用功能键和快捷键的可用性。 68布局键盘的特点: 1. 紧凑型设计:68键布局相比全尺寸键盘,去掉了数字小键盘区,...
4. 百分比分配:在某些情况下,RGB值也可以用百分比表示,如50%的红色(128, 0, 0),100%的绿色(0, 255, 0)和75%的蓝色(0, 191, 255)。 压缩包中的“RGB color charts for American DJ Scene Setter.htm”可能...
4. **舞会中的黑帽子问题**:这个问题展示了逻辑推理和概率的应用,需要理解在特定情况下最可能出现的情况。 5. **手电筒和过桥问题**:这是一个优化问题,通过计算各种组合来最小化时间。 6. **选择最大钻石问题*...
在“shader.rar”中,这个效果可能通过在片段Shader中读取烘焙后的光照信息来实现,使得游戏中的物体在黑暗环境下能够呈现出逼真的光照效果。 遮罩黑幕效果通常用于创建场景过渡或者控制可视区域,比如在探索类游戏...
字模,即字符模型,是汉字或其他字符在特定点阵格式下的二进制表示。例如,一个8x8的点阵可以表示一个简单的汉字,其中8行代表字符的高度,每行8个点代表宽度。每个点的状态(0或1)决定了该位置LED灯是否亮起,从而...