如何判断程序员的代码是否优美?

用户头像
Garfield
关注
发布于: 2020 年 09 月 02 日
如何判断程序员的代码是否优美?

非专业人士想欣赏一段代码,有哪些关键点是可以关注的呢?



简洁/整洁



我们在看一张书桌时,什么样的物件摆放和装饰风格是整洁的?



这样:





或这样的:





那么,杂乱的呢? 大概这样:





看一段代码也一样,简单、没用重复、可读性强就让人舒服。 即使有不可避免的,复杂的代码,仍然能读出逻辑。



举个简单的例子,我要输出 0-99 这100个数字。 不简洁的可能是这样:



func printNumber(){
fmt.Println(0)
fmt.Println(1)
fmt.Println(2)
fmt.Println(3)
fmt.Println(4)
fmt.Println(5)
fmt.Println(6)
fmt.Println(7)
fmt.Println(8)
...
fmt.Println(99)
}

简洁的可能是这样:



func printNumber() {
for num := 0; num < 100; num++ {
fmt.Println(num)
}
}

或这样:



func printNumber() {
num := 0
for num < 100 {
fmt.Println(num)
num++
}
}

这一点可深究的东西很多,专业人员可看一本书《代码整洁之道》: https://book.douban.com/subject/4199741/



命名



什么是好的命名? 别人一看到你的命名就知道你的代码要做什么,或者这个变量是干什么的。



比如这样的命名:



// Bad
type Dd struct {
aa string
}
// Good
type Dog struct {
name string
}

不好的命名不知道这段代码要做什么,第二种一看就知道我定义了一个结构体,表示「狗」 这个对象,狗有个名字 用 变量 name 表示。



命名除了可读,往往还需要准确,不啰嗦,比如下面两段代码:



type File interface {
ReadFile() string
WriteFile() string
}



type File interface {
Read() string
Write() string
}

我针对文件操作定义了 2个方法,读和写,第一种就显得有点啰嗦。



注释



优秀的代码本身有自说明的功能,不需要过多注释。



但在实现一些复杂功能,代码本身无法清晰地阐述作者的意图时,需要写注释。



且注释应该重点表达 「我为什么要这么做?」。



当然,如果代码包含难懂、比较关键的思路,也应该在注释中写清楚。



逻辑



逻辑优美这个概念有点抽象,常表现为代码结构层次明显,逻辑清晰,想法巧妙,有的代码看到就有种神来之笔的感觉。



大师级的程序员能把代码像故事一样表达出来,干净利落,代码有从上到下的自然的阅读顺序。什么情况下用动词,什么情况下用名词,都要经过考究。



排版



排版比较好理解,和我们一篇文章排版类似。不经过排版的代码很难看,更别提看懂了,类似这种经过压缩,完全去掉格式排版的 JavaScript 代码:



有排版的大概这样:





​对程序员来说,比较好的是,现在的高级语言中,都提供了代码格式化的工具,或者风格检查约束,无需程序员过多的自己去排版,调整格式。



以上是几点比较简单的代码欣赏可以关注的点。

----------------------

公众号:life-is-x

知乎:OneZero



发布于: 2020 年 09 月 02 日 阅读数: 23
用户头像

Garfield

关注

Golang Service Mesh 2018.05.15 加入

还未添加个人简介

评论

发布
暂无评论
如何判断程序员的代码是否优美?