面向对象实践之路:提升抽象层次

  多少次有人问我如何构建一个比较好的类阶层次,如何使用面向对象进行设计,或者问为什么我看了那么多面向对象和设计模式的书一到使用的时候却总是写出面向过程的代码。每当我碰到这些问题的时候我总是回答,其实我也不知道。真的,其实我也不知道。

  虽然我总是张口闭口面向对象,总是看到一个问题后就谈这个有点XXX模式的影子,但大部分时候碰到一个问题我还是一片空白,不知道如何去分析设计和实现出好的面向对象。所以,我只想谈谈我是如何实践面向对象的,这对我自己有用但不一定对你有用。嗯,回到正题。

  回顾编程方法的发展史,我想不外乎两个字:抽象。

  从最早的汇编语言中使用的子例程到结构化编程,然后到面向对象、面向组件以及面向服务。我觉得都是不断地提升抽象的层次。所以编程方法没有好坏,只有适合不适合。在汇编时代问题规模都很小,所以我们需要的抽象能力不需要太强。而现代的软件项目,问题的规模非常庞大,需要考虑的事情非常多(虽然纯粹的技术含量不一定有汇编时代的高),我们就必须使用抽象层次更高的方法来匹配我们的问题规模。

  面向对象编程方法的出现也不外乎如此,所以我们在使用面向对象方法开发的时候一个目的就是要提升抽象层次(比如现在由有人提出面向对象已经不足以匹配并行软计算的抽象层次,所以不再教授面向对象,转而教授函数编程)。

  而我觉得提升抽象层次的一个好方法就是用代码与人交谈,用代码来表达你的思想,在代码中形成一个个“概念”,或者说代码就是用来传递知识的。我将概念二字加上引号并加粗是有特别强调的意思,这个在后文我会谈谈什么是这里所说的概念。我不想在表面文字上谈论太多,我们来实践吧。

  注意,本文代码仅仅为了说明一些问题或现象,并不考虑业务上的合理性,读者可以自行分辨然后拿自己的业务代码进行思考。

  方法的参数

  不知道你写过或见过下面的代码没有:

bool IsValid(string userName, string password, string email, int status);        
        

it知识库面向对象实践之路:提升抽象层次,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。