作为一个程序员,离不开编码。随着时间的积累,编码能力会逐渐提升,本文试图探讨作为一个代码编写者,需要经历的四个阶段。
重构(Refactor)
重构这个代码编写技巧,源自于我早先看到的一本书《重构:改善既有代码的设计》。
重构的意思是说,代码是随着需求的增加,而不断变化的。比如,你写了个程序,输出了“Hello World”。你可能会用下面的语句:
print "Hello World"
但是如果增加需求,支持输出文本用不同的颜色展示。你可能会先封装一个函数来支持,然后用这个函数去输出“Hello World”。
def output_color_text(text, color): # ... output_color_text('Hello World', RED)
然后新的需求又来了,需要支持不同大小的文本。为了满足这个需求,你可能会先设计一个类,然后在封装一些成员函数,最后只要调用相关方法即可按需求输出文本“Hello World”。
class OutText: def __init__(text): # ... def set_size(size): # ... def set_color(color): # ... def output(): # ... text = OutText() text.set_size(24) text.set_color(RED) text.output('Hello World')
重构只能算是一种写代码的技巧,而且只是包含了一些基本的重构规则,无法形成一个比较完善的体系,因为重构和需求的变化有关,而且,需要程序员去思考代码改往哪个方向走。
设计模式(Design Pattern)
说到设计模式,肯定会想到这本书《计算机科学丛书:设计模式 可复用面向对象软件的基础》
这本书被称为经典,我看到的很多人都在看这本书。这本书里的23种设计模式,在我看来是远远不够的,因为我们看到,这里面的很多设计模式都和图形界面程序有关。而一些基本的设计模式,比如创建模式,则是为了弥补语言的不足。
语言(比如Python)通常被设计成通用的,而通用语言是可以被用在所有的场景里面。但是问题在于,我们更多的时候,是使用语言来满足特定的需求的。我们可能会用语言去写一个网站、一个数据库系统,那么在这种使用场景里面,你会发现通用语言用起来太麻烦了。所以有人就总结除了设计模式,其实也就是为了弥补语言在特定场景下的不足。
至于一些和特定使用场景相关的设计模式(比如装饰模式),则和语言的使用场景有关。语言的使用场景是无法枚举的,所以设计模式理论上应该有无限多个。
如果拿设计模式和重构来比较的话,设计模式只是满足了一个相对大一点的需求。比重构考虑的更远一点而已。
框架(Framework)
相对于前面两种技巧而言,框架能解决更大一点的需求。而且框架已经属于设计范畴,也就意味着,框架更稳定。
框架的例子,比如Python的Django,就是用来支持网站后端。除非访问量很大、并发很多,否则这个框架是一直可以胜任的。
相对而言,框架的设计和实现,需要更丰富的经验和技巧。而通常情况下,你不需要自己设计框架。
我感觉,这一块,主要是;重构+设计模式+业务需求。似乎,也没有什么可以指导的方法论。
软件架构(Software Architecture)
软件架构这块牵扯的东西太多,我经验也不多。推荐看这本书《架构即未来:现代企业可扩展的Web架构、流程和组织(原书第2版)》。
软件架构可能会考虑公司未来3-5年的需求,以及公司现有的资源,将来的发展状况等等,已经不是代码层面的问题了。但即使这样,也仍然可以找到一些基本的准则,用于指导软件架构工作。