如何写结构优美的代码
结构优美的代码,是每个程序员的追求。可能这个没有严格的标准,但是有些原则会有助编写结构优美的代码。
1.对代码的逻辑层次要有感觉。
比如大体上,一个程序会分三个层次:界面层,逻辑层,数据层。简化后一般也有两个层次:界面和逻辑层。
逻辑层是去掉外表的,内在的,实质的东西。一般来说,就是表现为对数据的一组操作。
而界面层,是关注程序应该如何和用户沟通的。比如可视的视窗,图表,控件等。它是内部逻辑的呈现,也是用户和内部逻辑沟通的桥梁。
区分这两个层次的好处,一个是这两个层次所注重的核心内容有所不同,用到的技巧或者指导方法有所差别。第二点是,可以将问题解构和局部化,减轻开发难度。第三点,有助分开来修改内容,比如界面层挪动一下,改变一下形式,并不需要修改逻辑层的;而逻辑层改进一下算法,也不会影响界面层的代码。
对代码的逻辑层次有感觉,以上的要求只是很基本的,编写代码要时时刻刻对当前代码所代表的逻辑层次要有“感觉”,要能意识到这段代码和上一段代码是否在某种标准下,处在同一个层次。比较经典的范例如:互联网的7层协议,还有操作系统的层次分部等。编写代码要善于归纳这些层次,才能建构一个优美的结构。
2.善于抽取算法代码
一般编写代码,会有两种明显的不同的思维形式,一种是围绕业务内容的,一种是脱离业务内容,独立存在的,一般表现为算法内容。 在实际开发中,一般很少会用到(正式的)算法,但是总是会有一些地方会用到算法。当算法和业务逻辑纠结在一起的时候,会导致业务逻辑不清晰,因为算法大多数情况往往都是难以阅读理解的数学公式。将算法抽取出来,无疑有助业务逻辑的清晰化,同时抽取的算法代码,又能成为你的代码积累,就算换了新的业务也能派上用场,何乐而不为。
3.提取工具代码
日常开发中,工具代码比重不少。何为工具代码,非软件逻辑核心的,却有助于软件开发过程实施的代码。工具代码大部分由框架和第三方程序库提供,但也往往需要开发针对性的部分,这一部分将成为代码积累的重要组成部分。
4.抽象技巧
抽象是重要的技巧,一般来说越高的抽象,能适用的问题就越广,也就越有(潜在的)使用价值。一般应该尽量使用高抽象的代码来编程,少使用具体的代码来编码。但是抽象和具体总要在某个点上缝合起来,这个点的选择应该三思。