只有经历过,才能深刻理解的9个编程道理

新闻 前端
生活中的很多道理都是亲身经历过才能真正明白的,在编程中也是一样的,时间和经验能教给你的东西在别处学不到。下面这9点,我必须很艰难地去实践学习!

 [[342882]]

图源:unsplash

生活中的很多道理都是亲身经历过才能真正明白的,在编程中也是一样的,时间和经验能教给你的东西在别处学不到。下面这9点,我必须很艰难地去实践学习!

1.最便宜、最快和最可靠不可兼得

戈登·贝尔(Gordon Bell)曾经说过这样的话。在此要我们学到的是,应该尽可能保持系统或软件简单易懂。降低其复杂性,漏洞也会随之减少。

2.Voodoo编程

很多程序员自始至终都有这样的经历:有时你成功修复了漏洞却不理解问题出在哪里。请务必要理解自己写下的代码,并且找出修改奏效的原因。这种心态会比书本教给你的更多。不要觉得不好意思,实在不明白的话就去向别人请教。没准哪一天,你就会发现自己也变成了别人请教的对象。

复制粘贴代码也是如此。有时候,我们都会使用堆栈溢出,这没关系的。但是如果你不理解代码,要么就别用,要么就找人问问清楚。创造或使用自己不理解的代码也被称为Voodoo编程,这是一个潜在的漏洞。

3.代码不会骗人,但有时注释会

注释起着很重要的作用,但是如果可以的话,尽量不要使用注释,而是书写更多的描述性代码。这是因为在你修改代码的时候,注释往往会被忽视。因此我这样说:注释有时会骗人(有错误),因为它周围的代码已经改变,而它自己没有被修改。

只有经历过,才能深刻理解的9个编程道理

图源:unsplash

有三种方法书写代码:

· 在代码中使用注释。

· 将注释写在单独的文件中。

· 书写自我说明的代码。

我来详细说明一下最后一点。下面是书写更多描述性代码的意义:

· 好好设计代码库,使它方便查找且结构合理。

· 不要尝试保存缩写字母。在对变量、类和函数命名的时候使用全称,比如不用wm用windowManager,不用rf用readFileToString。当你或者其他人间隔数月再看代码试图理解其意思时,这种命名方式会有很大帮助。

· 尽可能多地提取函数并让它们各司其职。根据其功能进行命名,比如,创建一个将文件读入字符串的函数,将其命名为readFileToString(String fileName),不用仔细阅读代码就能明白它的作用。

最理想的情况是,你的代码由一系列这样的函数调用组成,读起来就像人类语言一样。只有在需要的时候,读者才会去深入理解,这些代码本身就有说明的作用。

4.正则表达式

在面对问题时,有些人会想:“要用正则表达式!”好的,现在他要面临两个问题了。这个笑话有点儿年头了,但依然是人间真实。正则表达式是一种痛苦,当你以为终于为一个案例找到正确答案的时候,对于下一个案例就只有70%匹配。

只有经历过,才能深刻理解的9个编程道理

图源:WikiMedia

以上仅仅是我的想法,除非万不得已,建议不避免滥用正则表达式。通常,像split、substring、endsWith、indexOf等函数的组合将会产生更加易读的代码。

5.软件就像大教堂:我们建造它们——然后祈祷

《大教堂与集市》一书对比了两种不同的开发模式。正如维基百科中所写:

“在大教堂模式下,每个软件版本都可以获得源代码,但在不同版本之间开发的代码仅限于软件开发人员这个专属群体;集市模式下,代码是在公众视野中通过互联网开发的。Linux内核项目的领导者林纳斯·托瓦兹(Linus Torvalds)被认为是这个过程的发明者。”

两种模式各有利弊。然而,人们普遍认为软件需要迭代开发,在这个过程中其功能逐渐变多,所以终端用户最好从早期就参与开发过程。

[[342883]]

图源:unsplash

6.在便宜、快速和可靠中三选二

我喜欢这个部分,它让听者(你的经理)自己思考:

· 你想要可靠且快速?可以是可以,但你要聘用最好的程序员。

· 又便宜又快?那就别指望它可靠了!

· 又可靠又便宜?也许你很幸运,但是你需要花费更多时间找到廉价的劳动力,或者需要大量迭代(因此需要更多时间)才能做好。

7.在软件工程中有两件难事

· 0.命名

· 1.缓存失效

· 2.大小差一

我们人类一般会从1开始计数,而计算机从0开始。这项简单的事实成为了很多漏洞和困难的来源。你很可能已经犯过大小差1的错误,如果还没,别着急,它们总会找上你。

8.好的程序员在通过单行道时会查看两边

最好的程序员可以处理所有错误,注意,我说的是所有,即使是那些“永远不会出现的错误”。

大多数软件都是为了实现“快乐流”而编写的——一切都按照预期进行,用户不会做些奇怪的事情。然而现实世界是混乱的,随着时间的推移,有潜在风险的事情也会出错。尝试捕捉尽可能多的错误,特别是当你的软件正在实现重要功能的时候。

[[342884]]

图源:unsplash

9.按代码行衡量编程进度就像按重量衡量飞机制造进度一样

更多代码行并不代表更多进度。同样,书写更多代码并不意味着你比别人更高效。最好的代码应该能够言简意赅地完成任务,这也是最难写的。这是一个众所周知的软件原理,叫作KISS,是“Keep It Simple, Stupid(保持简单、易懂)”的缩写。

如果对哪条感到不甚理解,没关系的,你只需要记住它们,然后静候实际经历的那一刻让你深刻理解它。

 

责任编辑:张燕妮 来源: 读芯术
相关推荐

2017-01-13 08:52:46

HDFS机制Then

2012-12-31 14:59:58

Android开发Layout_weig

2011-04-18 19:36:10

HSRP协议

2011-05-18 09:47:39

spring

2019-10-25 22:17:25

开发者技能工具

2011-03-14 13:11:07

Oracle数据库

2016-11-03 08:57:02

javascriptjquerynode.js

2017-11-27 11:26:35

程序员Bug调试

2010-08-02 10:11:51

DB2数据库编目

2022-12-04 09:19:25

JAVA并发有序性

2012-06-21 10:00:25

团队合作程序员

2014-10-15 10:49:27

程序员

2022-05-10 08:57:56

死锁程序线程

2021-12-28 21:52:14

订单

2022-09-28 16:57:40

物联网安全医疗保健网络攻击

2023-08-20 22:22:44

Token内存ChatGPT

2021-09-01 07:08:32

大数据平台迁移

2018-06-21 15:23:36

2017-08-03 13:46:34

白熊视频技术创业在路上程序员

2017-11-21 08:22:16

程序员编程技术
点赞
收藏

51CTO技术栈公众号