高质量编程笔记| 青训营笔记

84 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天。

课堂重点

这篇笔记旨在复习高质量编程这节课。 本节课主要介绍了编程原则,包括简单性、可读性和生产力,即代码要写得简单易懂,这样的代码更容易维护、需要更少的学习成本、团队合作成本,从而提高整个团队的生产效率。

知识点介绍

1、注释

重点:注释应该解释清楚代码的作用,写清楚函数的参数、返回值,会碰到的异常情况,并解释函数是如何实现这个作用的。此外,注释还要解释出代码未表达出的上下文信息。在修改代码时,必须要对应修改注释,保证代码和注释能够相对应,有利于代码维护,提高维护效率。

2、命名规范

一般使用的是驼峰命名法,如要表达变量:用户id,一般使用变量名UserId。

注意几个特殊情况:略缩词全大写,但当其位于变量开头且不需要导出时,使用全小写。例如:

使用变量名ServeHTTP而不是ServehHttp

使用变量名XMLHTTPRequest或者xmlHTTPRequest

变量距离其使用的地方越远,则需要携带更多的上下文信息。全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义

变量名要在尽量简洁的情况下,并让代码阅读者理解变量的意义。 如:

func(c* Client)  send(req *Request , deadline time.Time)
func(c* Client)  send(req *Request , t time.Time)

上述代码中,将deadline换成t降低了变量名的的信息量,因为t常代指任意时间,但是t并没有deadline那样准确的信息指代截止日期,在被外部调用时,看到deadline会比看到t更容易想到代码参数的意义。因此,虽然t替换deadline缩减了变量名的长度,但是信息不足,使用deadline会比t更好。

函数命名:函数名尽量简短,不携带包名的上下文信息。例如:

func Serve(I net.Listener,handler Handler) error
func ServeHTTP(I net.Listener,handler Handler) error

上述代码中,已经在HTTP包中,因此Serve这个函数实际上已经有了Serve和HTTP两个信息,使用ServeHTTP更冗余,一般选择使用函数名Serve。

3、控制流程

控制流程一般用最小缩进,尽量保持代码路径为最小路径。

线性原理,处理逻辑尽量走直线,避免复杂的分支嵌套。

正常流程代码沿着屏幕向下移动。

提升代码可维护性和可读性。

故障问题大多出现在复杂的条件语句和循环语句中。

总结

以上就是我对高质量编程这节课的总结,如有问题请指出,我会积极改正。