coding感想(二)

coding感想(一)之后,有了这篇coding感想(二),主要是因为最近几天接触了一些比较“生猛”的代码,所以想借助本文总结下,本次分享主要有以下4个方面:

  • 代码中的空格和空行
  • 代码中的注释
  • 代码中的数字
  • 代码中的日志

1)代码中的空格和空行

某天上班时,看了一些代码,我忍不住发了一条朋友圈,内容如下:

写代码时,空格和空行真的很重要。

真的没忍住,最基本的布局意识和美感都没有,函数定义之间一行挨着一行,逻辑判断从左写到右,运算符和变量之间没有一个空格,代码块之间也没有用空行分隔下,看得人头晕眼花。就像公司某技术大神说的一样,看到那样的代码,不先格式化一下,心里是拒绝维护这样的代码的。空格和空行都写不好,还指望能写好代码,我觉得有点不太可能。程序员写的代码是要给人读的,不是给机器读的,这个别人也许是6个月后的你,代码是需要不断维护的,人都读不懂,何谈维护。实在不知道如何布局,用什么语言,就去看看该语言的标准库是如何布局的。

2)代码中的注释

代码看多了,多少会看到一些“无脑”注释,比如:

// get host name
func getHostName() {

}

// initialize environment
func initEnv() {

}

函数名已经自注释了,还多此一举,废话连篇。最反感的就是这类注释,写代码的人就是为了注释而注释,一点都不动脑子。我看到这类注释,一般就是直接删除或者修改变量名,把更多信息装到名字里面。比如下面这个注释:

// download page
func getPage(url string) {

}

改成这样就更易读:

func downloadPage(url string) {

}

根本没有必要写那多余的注释,如果名字不能承载更多的信息,才想到通过注释来解释这段代码,而不是随意取一个名字,然后又通过注释来说明代码的意图。阅读这样的代码无形中就增加了代码维护人员理解这段代码所需时间。我的建议是,尽量让代码自注释,即代码易读易懂。除非真的有必要,才写注释,但是写注释之前我都会考虑下是不是命名不够准确。注释太多也是需要花时间维护的,如果代码的逻辑改变了,但是注释没有更新,就不好玩了。不要忘记注释的目的,是为了别人或者自己更快速的理解代码意图,而不是空写一些无意义的注释。

3)代码中的数字

在读代码时,经常看到一些数字,不联系上下文仔细看,硬是不知道数字代表什么意思。比如下面的代码:

update_interval = 5

这里的数字5到底代表什么意思。表示更新间隔是5秒?还是表示更新间隔是5个小时?又或者5天?可能有时候就算联系上下文也未必知道这个数字5到底是什么意思。所以,我建议在代码中只要出现一些难以理解的数字,尽量取一个易读易懂的名字,或者添加必要的注释。比如上面的例子可以通过以下方式得到改善:

update_interval_seconds = 5

or

TIME_SECOND = 1
update_interval = 5 * TIME_SECOND

4)代码中的日志

调试过代码的人都知道,如果程序打印的日志详细且合理,只要一看日志就能大概知道问题出在哪,能大大节省代码的调试时间。比如,一个程序在创建文件时由于磁盘空间已满,创建文件失败,那么这时候打印一条“由于磁盘空间已满,创建文件失败”的日志就很有必要。否则,当你试着在自己环境重现该问题时,如果你磁盘空间未满,估计永远也重现不出该问题,更谈不上解决问题了。另外,日志的打印会根据不同的场景而选择不同的日志级别,常见的日志级别有以下6种:

  • info: 打印一般描述信息,表示程序运行的过程,该类信息可能面对最终用户,需要谨慎
  • debug:打印程序的调试信息,只要是对调试有帮助的信息都可以通过该级别打印,一般程序正式发布后就不打印该级别日志
  • trace:比debug级别的粒度更细,追踪程序的运行状态
  • warn: 打印警告信息,表明程序运行有潜在错误,需要引起注意
  • error:打印错误信息,程序一般还可以继续运行,但是应该引起注意
  • fatal:打印严重错误信息,程序一般都需要退出,否则继续运行会导致更严重的错误

所以,写代码时要根据不同的场景打印不同级别的日志,以便未来方便维护。当然,日志不是越多越好,日志打印太多,会有性能影响,但是如果没有日志,那也是万万不行的。

本次分享就到这里,下次再继续~

本次荐书:未来简史

未来简史
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,637评论 18 139
  • 来源与:阿里云栖 禁止用于商业用途 ps:如果需要电子书 评论你们邮箱 我会发给你们 下面感觉还是有点乱 目录 一...
    小向资源网阅读 7,579评论 0 12
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,858评论 25 707
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,217评论 9 467
  • 解忧杂货铺,一片清新的小说,在读它的时候,我又有了都网络小说的感觉。不过与网络小说各种设定不同。这本书还是有大师的...
    行者N阅读 576评论 0 1