相信很多人都听过这一个故事,一个计算机老师给自己的学生出了到程序题
题目如下:
请用最简单的方法打印如下字符,不用考虑其他任何因素
```
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
```
于是,有一位聪明的同学很快就就在自己的屏幕上打出了这串字符,于是,这位计算机老师过去看了下,他的程序,他说,你的程序写错了,他的程序如下:
```
package main
import (
"fmt"
)
func main() {
var nums []int
for i := 1; i < 6; i++ {
nums = append(nums, i)
for _, num := range nums {
fmt.Printf("%d ", num)
}
fmt.Println()
}
}
```
他不解,既然结果都对了,那程序为什么错了,于是,这位计算机老师给出了自己的答案:
```
package main
import (
"fmt"
)
func main() {
fmt.Println("1\n"+"1 2\n"+"1 2 3\n"+"1 2 3 4\n"+"1 2 3 4 5\n")
}
```
是不是很简单的一行代码就把这个问题个解决了。
好了,故事到这,可能代码有各种版本的实现,这里我使用了golang。
可能很多人会说,这么简单的代码体现不出自己的能力,是的,它是很简单,这位同学写的代码用了很多语法,
说明他很用功学习,但是这位计算机老师要的只是在屏幕上打印出这串字符而已,有很多人会问,这位计算机老师的代码太简单了,没有扩展性。是的,它确实没有扩展性,但是他的需求就是要在屏幕打印那段字符而已,并没有其他要求。
有时候,我们一直在探讨代码的质量,如何写的有可扩展性,往往会陷进代码里边去出不来,而忘了自己最初的目的,我们敲代码是为了解决了工作上的问题,不是为了追求代码无所不能这种本末倒置的想法,我们应当追求的能用最简单快速有效的方式解决现有的问题,而不是沉溺于各种语法糖中,代码是用来解决问题,首先还是看清需求,再来敲代码。
最后,这些天b站源码泄露,很多人网上疯传甚至github上pull下来研究,很多惊呼b站的源代码写的如此高大上,用到了很多高级语法,底层封装,微服务架构等等,我们试想一下,bilibili也算蛮大的一家公司,这份源码肯定经过不同人的手,而这些人能力水平也有高低,而他们也会像我们一样因为生活离职跳槽,那么,人写出的代码都是会有bug的,也就是b站这份源码里面也是会有以前的人遗留下来的坑,等着下一批接手的人来填,所以,当我看见别人的源码时是如此的复杂,自己离别人是如此远,那么我们真的需要这么复杂的代码吗?并不需要,他们的代码复杂,只是为了解决他们所面临的问题,那我们面临的问题,可能远没人家的大,所以,也就不需要复杂的代码
有疑问加站长微信联系(非本文作者))