9条编程带给程序员的坏习惯

2023-10-21 13:50

本文主要是介绍9条编程带给程序员的坏习惯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


如果你是一个程序员, 或者你就读计算机相关专业, 那么你应该能理解下面这些诡异的小习惯是怎么养成的, 或者你本身就有着其中的某些习惯:

0. 程序员数数会从0开始数起.

例: 程序员吵架的时候会说: “我数三下, 你再不闭嘴我就不客气了! 零! 一! 二!” 或者列清单的时候编号会从0.开始写.

因:  array[0]是数组的第一个元素.

评: 这个习惯的养成是一个艰难的过程. 多少次的越界, 多少次的循环次数错误让我们深深的记住了从0开始.

1. 程序员用肯定和否定回答选择性的问题.

例: 问 “您想喝咖啡还是喝茶?” 程序员答: “嗯.”

因: 当条件或||有一个子句值为真, 则整个语句值为真.

评: 这个习惯夸张了一点, 但这的确是程序员思维方式的通病, 用计算机的处理逻辑处理人类问题. 当然这样的回答显然是存在编程错误的, 因为对于这个问题他错误的返回了布尔型的值. 虽然高度怀疑有没有人关心这种回答的结果是怎样, 还是给出一个答案. 如果真的在程序的世界里, 服务员会优先考虑给你咖啡, 如果没有咖啡了, 才会端茶给你.

2. 程序员普遍患有或曾经患有分号结尾综合症;

例: 比如这几行;

因: 大部分程序, 特别是多数程序员的启蒙编程语言C语言是用分号结尾语句的;

评: 换行之前习惯用分号结尾, 这是程序员专属的坏习惯. 还记得编译报的各种诡异的错最后原因总是少了那一个小小的”;”吗? 这就是这个坏习惯的成因. 据说分号结尾是有典故的, 因为键盘上的分号正好在右手小拇指的位置, 比起句号之类有着得天独厚的地理优势. 当然也有不需要分号结尾的编程语言(比如Ruby还有Python), 刚用起来会因为没有分号结尾而格外纠结.

3. 程序员对”语言”的概念和普通人有差.

例: 问: “你都会哪些语言?” 普通人: “我会汉语和英语, 还会一点点法语.” 程序员: “我会C语言, C++ 和 Java, 还会一点点Ruby.”

因: 程序员的世界里没有母语和外语, 只有编程语言.

评: 说真的, 程序语言的语法学起来比外语更容易, 拿到一个用没学过的语言写的程序, 你多少可以看懂部分程序. 程序语言没有国界, 是各国程序员交流最好的桥梁.

4. 程序员格格外外的厌恶括号/引号不配对的情形.

例: 看到这样的内容 (举个简单的例子(我知道你懂的), 你能表示”我很淡定我不抓狂吗?

因: 各种不配对问题会导致编译错误.

评: 扫视代码, 对不配对的情况异常敏感, 瞥一眼就能发现哪里少了个右括号. 这种症状在使用那些带自动补全功能的开发环境时变得更为纠结.

5. 程序员认为 千(k) == 1024.

例: 程序员换算表: 1km == 1024m, 1kg == 1024g.

因: 成因很曲折 – 计算机是二进制的世界 -> 1024是2的10次方 -> 英语里用kilo一词来表示 -> kilo翻译成中文是”千”, 比如千米, 千克.

评: 也许一般人会认为500, 1000是很整的数, 但程序员会觉得512, 1024是很整的数. 不要奇怪, 如果128, 256, 512这种形式看着不够整, 帮你转换成二进制: 10000000, 100000000, 1000000000…

6. 程序员惯用 == 来表示相等的意思.

例: 见5.

因: 在程序语言中, “=” 是赋值, “==” 才用来判断二者是否相等.

评: 单等和双等的区别是程序入门必修课, 也是老师爱考的考点. 如果在C语言if语句的判定条件里写了个单等, 编译能通过, 结果却往往不对, 够一个新手查上一阵子的. 当然目前的语言大都考虑到这一点, 防止了这类的误写, 但是单等和双等的差异已经深入每个程序员的内心.

7. 程序员使用”//”表示”请无视这一行文字”.

例: 餐厅中.

程序员A: “我吃鱼香肉丝盖饭, 你吃什么?”

程序员B: “宫保鸡丁盖饭.”

程序员A在点菜单写上:

鱼香肉丝盖饭 1

宫保鸡丁盖饭 1

程序员B: “我还是要牛肉面吧!”

程序员A更正点菜单:

鱼香肉丝盖饭 1

// 宫保鸡丁盖饭 1

牛肉面 1

因: 程序中用”//”为代码加上注释, 程序运行时会无视掉”//”开头的代码行.

评: 如果和一伙程序员在一起时被冷落了, 可以抱怨一句”喂喂喂我是被注释掉了吗?” 相信一向以幽默感丰富又有爱心著称的程序员们会关注你的.

8. 程序员有中文标点恐惧症.

例: 如果你注意到了, 这篇文章自始至终都在使用英文标点, 这就是最好的例子.

因: 程序中的全部符号都严格需要是英文半角标点.

评: 这个坏习惯是有中国特色的, 中国程序员特有的. 任何一名优秀的我国程序员都应该可以作到区别中文标点和英文标点. 比如,  和,还有 ’和 ‘. 真的, 当年初学编程的时候, 诸如 “error C2018: unknown character ’0xa3′” 的错误看得还不够多吗!

就是这样一群人, 如果你慢吞吞的用电脑他们会急躁的抢过键盘熟练的使用各种快捷键, 他们会对着小孩子讲计算机的三原色是红绿蓝而不是红黄蓝, 他们描述大小距离更偏向于以像素作单位, 陪女朋友看电影看到电影院座位上稀稀落落的人就想做磁盘碎片整理…抱怨归抱怨, 这不也正是他们的可爱之处吗!

等等, 不是说有9条吗? 怎么只写到8? 呃…如果你有这个困惑,我猜你还要从头再看一遍程序员的坏习惯了.


转自:http://localhost-8080.com/2010/06/bad-habits-programming-gave-you/

这篇关于9条编程带给程序员的坏习惯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/254806

相关文章

零基础STM32单片机编程入门(一)初识STM32单片机

文章目录 一.概要二.单片机型号命名规则三.STM32F103系统架构四.STM32F103C8T6单片机启动流程五.STM32F103C8T6单片机主要外设资源六.编程过程中芯片数据手册的作用1.单片机外设资源情况2.STM32单片机内部框图3.STM32单片机管脚图4.STM32单片机每个管脚可配功能5.单片机功耗数据6.FALSH编程时间,擦写次数7.I/O高低电平电压表格8.外设接口

16.Spring前世今生与Spring编程思想

1.1.课程目标 1、通过对本章内容的学习,可以掌握Spring的基本架构及各子模块之间的依赖关系。 2、 了解Spring的发展历史,启发思维。 3、 对 Spring形成一个整体的认识,为之后的深入学习做铺垫。 4、 通过对本章内容的学习,可以了解Spring版本升级的规律,从而应用到自己的系统升级版本命名。 5、Spring编程思想总结。 1.2.内容定位 Spring使用经验

【新闻】AI程序员要来了吗?阿里云官宣

内容提要 6 月 21 日,在阿里云上海 AI 峰会上,阿里云宣布推出首个AI 程序员。 据介绍,这个AI程序员具备架构师、开发工程师、测试工程师等多种岗位的技能,能一站式自主完成任务分解、代码编写、测试、问题修复、代码提交整个过程,最快分钟级即可完成应用开发,大幅提升研发效率。 近段时间以来,有关AI的实践应用突破不断,全球开发者加速研发步伐。有业内人士坦言,随着大模型性能逐渐提升,AI应

IPython小白教程:提升你的Python交互式编程技巧,通俗易懂!

IPython是一个增强的Python交互式shell,它提供了丰富的功能和便捷的交互方式,使得Python开发和数据分析工作更加高效。本文将详细介绍IPython的基本概念、使用方法、主要作用以及注意事项。 一、IPython简介 1. IPython的起源 IPython由Fernando Pérez于2001年创建,旨在提供一个更高效的Python交互式编程环境。 2. IPyt

从《深入设计模式》一书中学到的编程智慧

软件设计原则   优秀设计的特征   在开始学习实际的模式前,让我们来看看软件架构的设计过程,了解一下需要达成目标与需要尽量避免的陷阱。 代码复用 无论是开发何种软件产品,成本和时间都最重要的两个维度。较短的开发时间意味着可比竞争对手更早进入市场; 较低的开发成本意味着能够留出更多营销资金,因此能更广泛地覆盖潜在客户。 代码复用是减少开发成本时最常用的方式之一。其意图

Java并发编程—阻塞队列源码分析

在前面几篇文章中,我们讨论了同步容器(Hashtable、Vector),也讨论了并发容器(ConcurrentHashMap、CopyOnWriteArrayList),这些工具都为我们编写多线程程序提供了很大的方便。今天我们来讨论另外一类容器:阻塞队列。   在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了D

剑指offer—编程题7(用两个栈实现一个队列)

题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail 和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。 代码如下: [java]  view plain copy print ? public class Test07 {       /**       * 用两个栈模拟的队列       *

剑指Offer—编程题4 ( 替换空格)

一、题目:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。    在网络编程中,如果URL参数中含有特殊字符,如空格、'#'等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换的规则是在'%'后面跟上ASCII码的两位十六进制的表示。

剑指Offer—编程题56(链表中环的入口地址)

题目:一个链表中包含环,如何找出环的入口结点? 解题思路   可以用两个指针来解决这个问题。先定义两个指针P1和P2指向链表的头结点。如果链表中环有n个结点,指针P1在链表上向前移动n步,然后两个指针以相同的速度向前移动。当第二个指针指向环的入口结点时,第一个指针已经围绕着环走了一圈又回到了入口结点。    剩下的问题就是如何得到环中结点的数目。我们在面试题15的第二个相关题目时用到