如何写出高质量的代码,这应该是每个程序员都在追求的,也是作为一个程序员的成就所在。什么样的代码才算得上是高质量的代码呢?答案很简单:高可读性、高稳定性、高扩展性。如果能写出这样的代码,那你就是一个优秀的程序员了。如何才能写出高质量的代码呢?接下来我将分享一些自己总结的经验。
首先我把写代码分为两个阶段:初级阶段和高级阶段。初级阶段:有良好的编码风格、没有魔鬼数字、不存在大量重复代码等,代码易读结构良好,但是代码整体不是很优雅,缺乏完整的面向对象思想。高级阶段:代码符合java的基本设计原则,充满面向对象的思想,具有高扩展性。很多程序员都处在初级阶段或者略高,JDK、JUnit、Spring等的源码就处在高级阶段,阅读这些代码就是一种享受。
那么如何编写高质量的代码呢?首先需要有一个良好的代码风格,适当的命名、空行、缩进、注释等,代码风格可以参见Sun的编码规范。然后要养成一些良好的编码习惯,避免复制粘贴、控制类和方法的长度、少用静态变量和静态方法、拒绝魔鬼数字。如果这些都能够做到的话,代码质量已经达到了一个较高的水平。如果想要代码质量进一步提高,让代码看上去更优雅、充满面向对象的思想,那就需要深入的了解java的基本设计原则并在这个基础上活用设计模式,切记不要乱用设计模式。当然这个说起来简单,真正要做到这一点还是很难的。这需要长时间的积累,多阅读一些优秀的开源代码,能从其中得到很大的启发。
下面简单的说一下我对java五大基本设计原则的理解:
 单一职责原则(SRP:Single Responsibility Principle),是指一个类只干他该干的事,通俗点的说就是少管闲事。在设计类、接口和方法的时候,都需要考虑是否满足了单一职责原则。这是最简单最基本的一条设计原则,也是在编码过程中最容易被忽视,最容易引起争议的。
 开闭原则(OCP: Open-closed principle),是指对修改关闭,对扩展开放。这是一个高层次的设计总则,让整体代码架构具有高稳定性的同时,也能满足对不同需求的高扩展性。
 依赖倒置原则(DIP: Dependence Inversion Principle),是指依赖于抽象,而不依赖于具体,抽象不应当依赖于细节,细节应当依赖于抽象。简单的说就是,要针对接口编程,不针对实现编程。
 里氏替换原则 (LSP: Liskov Substitution Principle),是指子类可以替换它的父类。当你需要继承一个类之前,需要仔细的思考这两个类是Is-A还是Has-A的关系。不要仅仅是因为要复用某个类的一些方法而去继承这个类。在Java中,代码复用有两种形式:继承和组合。如果两个类之间确实是Is-A的关系,那么可以用继承,否则请用组合方式。组合优于继承。
 接口隔离原则(ISP: Interface Segregation Principle),是指使用多个专门的接口比使用单一的总接口要好。同一个实现提供宽、窄不同的接口,提供给不同的客户端使用。 个人觉得这和单一职责原则有点类似。
在深入理解这五大设计原则的再去理解设计模式,你会发现每个设计模式的优缺点,在什么情况下用什么设计模式比较好。
最后要说的一点是责任心和成就感。代码不是写完就完事了,要抱着一种把代码写好、稳定、易于后人维护的一种态度去写代码,需要持续的重构,让代码不断的改进。当你写出的代码能够稳定的运行,并具有高扩展性,让阅读代码的人感觉这是一种享受,这是作为一个程序员最大的成就感。