工作一年的总结

算上实习的时间,工作也有一年了呢,幸运的是,实习的时候有大神带我,正式工作 之后又有许多东西来磨练。

但无论如何,要一个才一年的”菜鸟”来总结工作经验,还是有点说不过去的。但是 谁叫这里是我的博客并且每人能评论呢(开issue评论的不算)?!

  • 代码的第一要素是给人看!easy to read,当然这原话是从老司机那里copy来的, 对此观点我深表赞同,毕竟机器才不管你写的咋样什么风格呢,对它来说全都是 01010101

  • Do not magic! 以前我总想写一个由数据驱动代码的 generic 的框架,这样我 就可以省事儿啦!啥意思呢?举个很不magic的例子:

class Foo:
    def get_a(self):
        return "this is a"

    def get_b(self):
        return "this is b"

    def run(self, astr):
        return getattr(self, "get_%s" % astr)()


print(Foo().run("a"))
print(Foo().run("b"))

运行一下:

root@arch tests: python test.py
this is a
this is b

初看好像还好啦,但是如果一个项目里充斥着这种代码 —— 你试试就知道。

  • 把函数变成纯函数。抽离 I/O,抽离全局变量。依赖于全局变量和 I/O 总是不稳 定的,因为总是依赖外部状态。例如:
In [1]: import requests

In [2]: assert len(requests.get("https://api.github.com/").json()) == 30

万一哪天API改了,这代码就跑不动了。当然Github的API是很稳定啦,那网断了呢? 把函数拆开来,分成纯和不纯的部分。一方面可以提高复用性,另一方面的原因嘛。。。 稍等让我编一个 —– 毕竟就算抽出来也不能避免断网啊是不是 :joy:

  • 程序总是在理想和现实中间的一个位置 ——- 也就是说,他总是在两方面权衡之后 的结果。

  • 多读英文总不会错,如果说掌握语言最重要,那一定是英语。离了英文文档和Google 我简直不能活。


更多文章
  • Golang和Thrift
  • 折腾Kubernetes
  • 协程(coroutine)简介 - 什么是协程?
  • goroutine 切换的时候发生了什么?
  • Prometheus 数据类型
  • Gin源码阅读与分析
  • 如何面试-作为面试官得到的经验
  • 自己写一个容器
  • Golang(Go语言)中实现典型的fork调用
  • 软件开发之禅---大事化小,各个击破
  • 程序员的自我修养:链接,装载与库 阅读笔记
  • Redis源码阅读与分析二:双链表
  • Redis源码阅读与分析一:sds
  • Redis源码阅读与分析三:哈希表
  • Golang runtime 源码阅读与分析